학습 기록/CS : 전공지식 노트

CS : OS / 캐시 / 캐시매핑

서버관리자 페페 2024. 4. 27. 14:19

OS의 큰 역할 4가지를 말해주세요

1. CPU 스케쥴링과 프로세스 관리 2. 메모리 관리 3. 디스크 파일 관리 4. I/O 디바이스 관리  CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리합닌다.  한정된 메모리를 어떤 프로세스에 얼마나 할당해야 하는지를 관리합니다.  디스크 파일의 보관 방법을 관리합니다.  I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는것을 관리합니다.

 

-

 

O/S의 정확한 정의에 대해 말해주세요

O/S는 인터페이스이며, 사용자가 컴퓨터를 쉽게 다룰 수 있게 합니다.  한정된 메모리나 시스템 자원을 효율적으로 분배합니다.  운영체제와 유사하지만 소프트웨어를 추가로 설치할 수 없는 것을 펌웨어라고 합니다.

 

-

 

컴퓨터는 어떻게 이루어져 있나?

하드웨어와 유저프로그램(소프트웨어)를 관리하는 OS CPU, 메모리 등으로 이루어져 있습니다.

 

-

 

운영체제의 구조를 말하라

- 인터페이스(GUI, CUI) - 시스템콜 - 커널(드라이버, 파일 시스템)    로 이루어져 있습니다  컴퓨터는 기본적으로 하드웨어 덩어리이며, 유저 프로그램의 원하는 기능들은 이 하드웨어를 사용해야합니다.  그런데 직접 접근해서 사용하는게 아니라, DBMS를 이용하여 DB에 접근하듯이

 

-

 

CUI GUI

CUI는 명령어로 처리하는 인터페이스, 리눅스에서는 이것만 있다.

 

-

 

드라이버?

하드웨어를 제어하기 위한 소프트웨어입니다.

 

-

 

시스템콜의 정의

OS가 커널에 접근하기 위한 인터페이스

 

-

 

I/O 요청이란?

함수의 입출력이 될수도 있고 DB / 네트워크 / 파일 접근에 관한 일이기도 합니다.

 

-

 

I/O 요청인 fs.readFile()이라는 파일 시스템의 파일을 읽는 함수가 발동했을때 어떻게 진행되는지 말하라.

유저 모드에서 파일을 직접 읽지 않고, 커널 모드로 들어간 후 파일을 읽습니다. 그 후 다시 유저 모드로 돌아가 유저 프로그램에 남아있는 로직을 수행합니다. 이 과정을 통해 컴퓨터 자원에 대해 직접 접근을 차단할 수 있고 프로그램을 다른 프로그램으로부터 보호할 수 있습니다.

 

-

 

프로세스와 스레드 시에 시스템콜은?

프로세스나 스레드 역시 OS에 어떠한 요청을 할때  시스템콜이라는 인터페이스와 커널을 거쳐 OS에 전달됩니다.

 

-


시스템 콜의 장점을 말하라

시스템콜은 하나의 추상화 계층입니다.    그렇기 때문에 이를 통해 네트워크 통신이나 DB와 같은 low-level 영역 처리를 많이 신경쓰지 않고 프로그램을 편하게 개발할 수 있는 장점이 있습니다.

 

-

 

modebit?

1 or 0 의 값을 가지는 플래그 변수입니다.  커널 모드는 0, 유저 모드는 1입니다. 시스템콜이 작동될떄 modebit을 참고해서 유저 모드와 커널 모드를 구분합니다 작업 전후에 1에서 0으로 작업 후에 0에서 1로 바뀌는 것을 확인할 수 있습니다.

 

-

시스템콜 중 trap?

유저 프로그램이 I/O 요청으로 trap을 발동하면,  올바른 I/O 요청인지 확인한 후  유저 모드가 시스템콜을 통해 커널 모드로 변환되어 실행됩니다.

 

-

 

구조

유저 프로그램 -> OS -> 시스템 콜

 

-

 

컴퓨터의 요소

CPU DMA 컨트롤러 메모리   타이머 디바이스 컨트롤러(로컬 버퍼)  등으로 이루어져 있습니다

 

-

 

CPU의 역할과 구성 3가지에 대해 알려줘

Central Processing Unit은   레지스터 제어장치  산술논리연산장치 3가지로 구성되어 있는 컴퓨터 장치를 말하며,   인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행하는 작업자로 비유할 수 있습니다.

 

-

 

CPU와 OS의 관계는

OS 내부의 커널이 프로그램을 메모리에 올려 프로세스로 만듭니다. 그리고 CPU가 그 프로세스를 처리합니다

 

-

 

제어장치에 대해 말해줘

"Control Unit은 ""프로세스 조작을 지시하는"" CPU의 한 부품입니다.  I/O 장치 간 통신을 제어하고  명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정합니다   Jeff-George"

 

-

 

레지스터

CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에 내부에 레지스터라는 임시기억장치를 두어 데이터로 전달합니다.   CPU와 직접 연결되어 있으므로 연산 속도가 메모리보다 수십 배에서 수백 배까지 빠릅니다.

 

-

 

ALU에 대해 말해주세요

산술논리연산장치(Arithmetic Logit Unit)는 덧셈 뺄셈같은 두 숫자의 산술 연산과 배타적 논리합, 논리곱 같은 논리 연산을 계산하는 디지털 회로입니다.

 

-

 

CPU에서 Control Unit을 이용한 연산 플로우를 설명해 주세요

1) 제어장치가 메모리와 레지스터에 계산할 값을 로드합니다. 2) 제어장치가 레지스터에 있는 값을 계산하라고 산술논리연산장치에 명령합니다. 3) 제어장치가 계산된 값을 다시 '레지스터 -> 메모리' 로 계산할 값을 저장합니다.

 

-

 

인터럽트?

어떤 시그널이 들어왔을 시에 CPU를 잠깐 정지시키는 것을 의미합니다.  - 키보드 마우스 등 I/O 디바이스로 인한 인터럽트 - 0으로 숫자를 나누는 산술 연산에서의 인터럽트 - 프로세스 오류  등으로 발생합니다.  소프트웨어 인터럽트 / 하드웨어 인터럽트로 나눌 수 있습니다.

 

-

 

인터럽트가 발생되면 어떤 일이 일어나는가

인터럽트 벡터로 가서 인터럽트 핸들러 함수가 실행됩니다. 인터럽트 벡터는 인터럽트 핸들러 함수가 모여 있는 곳입니다.  이 때 인터럽트 간에는 우선순위가 있고 우선순위에 따라 실행됩니다.

 

-

 

인터럽트 핸들러 함수

인터럽트가 발생했을때 이를 핸들링하기 위한 함수 커널 내부의 IRQ를 통해 호출되며 request_irq()를 통해 인터럽트 핸들러 함수를 등록할 수 있다.

 

-

 

소프트웨어 인터럽트

trap이라고 하며 프로세스 오류 등으로 프로세스가 시스템콜을 호출할 때 발동합니다.

 

-

 

하드웨어 인터럽트

키보드나 마우스를 연결하는 일 등의 IO 디바이스에서 발생하는 인터럽트를 말합니다다.  이 때 인터럽트 라인이 설계된 이후 순차적인 인터럽트 실행을 중지하고 운영체제에 시스템콜을 요청해서 원하는 디바이스로 향해 디바이스에 있는 작은 로컬 버퍼에 접근하여 일을 수행합니다.

 

-

 

DMA 컨트롤러를 알려주세요

I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치를 말합니다. CPU에 너무 많은 인터럽트 요청이 들어오기 떄문에 CPU 부하를 막아주는 역할을 합니다. 또한 하나의 작업을 CPU와 DMA 컨트롤러가 동시에 하는것을 방지해야 하는데, 이 역할 역시 DMA 컨트롤러에서 자체적으로 수행합니다.

 

-

 

메모리와 그 구성에 대해 알려주세요

전자회로에서  - DATA - 상태 - 명령어  등을 기록하는 장치이며 보통 RAM을 통상적으로 부릅니다.  

CPU는 일꾼이고, 메모리는 작업장입니다. 메모리가 크면 많은 일을 동시에 할 수 있습니다.

 

-


타이머?

몇 초 안에는 작업이 끝나야 한다는 것을 정하고 특정 프로그램에 시간 제한을 다는 역할을 합니다.  시간이 많이 걸리는 프로그램에 제한을 걸기 위해 존재합니다.

 

-


디바이스 컨트롤러?

컴퓨터와 연결되어 있는 I/O 디바이스들의 작은 CPU를 의미합니다. 로컬 버퍼는 각 디바이스에서 데이터를 임시로 저장하기 위한 작은 메모리를 말합니다.

 

-


메모리의 4계층에 대해 알려주세요

레지스터 (L1 L2) 캐시 주기억장치(RAM) 보조기억장치  4가지이며  위로 갈수록 속도와 올라가며, 아래는 용량이 많습니다 보조기억장치만 비휘발성입니다

 

-


RAM의 역할을 알려줘

RAM은 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장하고, 그 임시저장된 데이터를 필요시마다 CPU에 빠르게 전달하는 역할을 합니다.  게임에서 로딩 중은, 인터넷이나 하드디스크에서 데이터를 읽어 RAM으로 전송하는 과정이 현재 진행중임을 의미합니다.

 

-

 

캐시가 정확히 뭘 말하는거야?

캐시는 데이터를 미리 복사해 놓는 임시 저장소이자, 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말합니다. 이를 통해 데이터를 접근하는 시간이 오래 걸리는 경우를 해결하고 무언가를 다시 계산하는 시간을 절약할 수 있습니다.

 

-

 

레지스터를 캐싱 계층의 측면으로 대해 말해줘

실제로 메모리와 CPU 사이에 속도 차이가 너무 크기 때문에 그 중간에 레지스터 계층을 둬서 속도 차이를 해결합니다/  이렇게 속도 차이를 해결하기 위해 계층과 계층 사이에 있는 계층을 캐싱 계층이라고 합니다.  또한 캐시 메모리와 보조 기억장치 사이에 있는 RAM을 보조 기억장치의 캐싱 계층이라고 할 수 있습니다

 

-


지역성

캐싱 계층을 둘때 캐싱의 목적에 맞게끔  자주 사용하는 데이터를 기반으로 캐싱 계층을 설계하는 것입니다 temporal locality(시간 지역성) / spatial locality(공간 지역성) 두 개로 나뉩니다

 

-

 


시간 지역성

최근 사용한 데이터에 다시 접근하려는 특성을 말합니다. for 반복문에서 직전에 사용한 변수i에  i++를 하면서 다음 접근이 이루어집니다

 

-

 

공간 지역성

최근 접근하 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하려는 특성에 대해 말합니다.  for문에서 배열에 연속적으로 접근함

 

-

 

캐시히트와 캐시미스

캐시에서 원하는 데이터를 찾았다면 캐시히트,  해당 데이터가 캐시에 없다면 캐시미스라고 합니다.  

 

-

 

캐시미스시에는?

주 메모리에 가서 데이터를 다시 찾아와야 합니다.

 

-


캐시 히트시와 캐시 미스시의 작동은?

캐시히트를 하게 되면 해당 데이터를 제어장치를 거쳐 가져오게 됩니다.  

캐시히트의 경우 위치도 가깝고 CPU 내부 버스를 기반으로 작동하기 때문에 빠릅니다. 

 

-

 

반면 캐시미스가 발생되면?

메모리에서 가져오게 되는데, 이는 시스템 버스를 기반으로 작동하기 때문에 느립니다.

 

-


캐시매핑?

캐시 히트율을 높이기 위해 매핑하는 방법입니다. 

CPU레지스터와 주 메모리인 RAM 간의 데이터를 주고받을때를 기반으로 설명합니다 레지스터는 주 메모리에 비해 굉장히 작고 RAM은 굉장히 크기 때문에 레지스터가 캐시 계층으로서 기대되는 역할을 잘 수행하려면 매핑을 어떻게 하느냐가 중요합니다.

 

-

 

캐시 매핑의 3가지 종류에 대해 알려주세요

직접 매핑(directed)  연관 매핑(asscociative) 집합 연관 매핑(ser asscociative)

 

-

 

directed Mapping에 대해 말해주세요

메모리가 1~100 캐시가 1~10일때 캐시 1에는 메모리의 1에서 10. 캐시 2에는 메모리의 11~20 매핑을 말합니다  처리가 빠르지만 충돌 발생이 잦습니다

 

-

 

연관 매핑에 대해 말해주세요

순서를 일치시키지 않고 관련 있는 캐시와 메모리를 매핑합니다/ 충돌이 적지만 모든 블록을 탐색해야 해서 속도가 느립니다.

 

-

 

집합 연관 매핑?

직접과 연관을 합쳐두었습니다. 순서는 일치시키지만 집합을 둬서 저장하며 블록화되어 있기 때문에 검색이 좀 더 효율적이비다  예를 들어 캐시 1~5에는 1~50의 메모리 데이터를 무작위로 저장시킵니다

 

-

 

웹 브라우저에 대해 캐시에 설명해주세요

쿠키 로컬 스토리지 세션 스토리지  3가지가 있습니다

 

-

 

쿠키에 대해 알려줘

쿠키는 웹 브라우저의 대표적인 캐시이며,  만료기한이 있는 key-value 저장소입니다 same site 옵션을 strict로 설정하지 않았을 경우 다른 도메인에서 요청했을 때 자동 전송되며, 4KB까지 데이터를 저장할 수 있고 만료기한을 정할 수 있습니다.

 

-

 

쿠키의 설정법을 알려줘

쿠키를 설정할 때는 document.cookie로 쿠키를 볼수 없게 httponly 옵션을 거는 것이 중요하며, 클라이언트 또는 서버에서 만료기한 등을 정할 수 있는데 보통 서버에서 만료기한을 정합니다.

 

-

 

로컬 스토리지에 대해 알려줘

로컬 스토리지는 만료기한이 없는 key-value 저장소입니다. 5MB까지 저장할 수 있으며 웹 브라우저를 닫아도 유지됩니다.  HTML5를 지원하는 웹 브라우저에서만 사용할 수 있으며 클라이언트에서만 수정 가능합니다.

 

-

 

세션 스토리지에 대해 알려줘

세션 스토리지는 만료기한이 없는 key-value 저장소입니다. 탭 단위로 세션 스토리지를 생성하며, 탭을 닫을때 해당 데이터가 삭제됩니다. 5MB까지 저장이 가능하며  로컬 스토리지와 함꼐 HTML5를 지원하는 웹 브라우저에서만 사용 가능합니다. 클라이언트에서만 수정이 가능합니다.

 

-

 

DB에 캐싱 계층을 알려줘

DB 시스템을 구축할 때도 메인 DB 위에 redis DB를 두어 성능을 향상시킵니다.

 

-


커널?

커널(Kernel)은 운영체제의 핵심이라 할 수 있는 매우 중요한 소프트웨어로 하드웨어의 자원을 자원이 필요한 프로세스에 나눠주고, 덩달아 프로세스 제어(작업 관리), 메모리 제어, 프로그램이 운영 체제에 요구하는 시스템 콜 등을 수행하는 부분이며 운영 체제의 가장 아래 계층에서 돌아간다. 현재 많이 사용되고 있는 운영 체제는 커널 위에 여러 가지 소프트웨어 계층을 올린 것

 

-


시스템콜의 목적

유저 프로그램이 OS의 서비스를 받기 위해 커널 함수를 호출할 때 사용합니다