1. 커널이란?

- 운영체제의 핵심 부분으로서, 운영체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러가지 서비스를 제공한다.

시스템 호출 : 시스템 함수들에 의해 이루어 지는데, C언어에서 사용 했던 printf(), write()같은 함수 이다.

드라이버 : 시스템 호출의 반대편에서 하드웨어 인터페이스를 담당한다. 간단한 디바이스 드라이버들은 커널에 포함되어 있지만 일부 복잡하거나 새로 출시된 디바이스 드라이버들은 제조사에서 직접 제작하여 사용자가 설치해야한다.

 

커널이 하는 일

프로세스 관리 ⇒ 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공

메모리 관리  프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공

파일 시스템 관리  데이터를 저장하고 접근할 수 있는 인터페이스를 제공

입출력 관리  필요한 입력과 출력 서비스를 제공

프로세스 간 통신 관리  공동 작업을 위한 각 프로세스 간 통신 환경을 지원

2. 프로세스 스케쥴링

  • CPU를 사용하려고 하는 프로세스들 사이의 우선 순위를 관리하는 일
  • 스케줄링은 처리율과 CPU이용률을 증가시키고 오버헤드/응답시간/반환시간/대기시간을 최소화 시키기 위힌 기법이다.
  • 즉, CPU가 쉬지않고 계속 열심히 일할 수 있도록 효율적인 계획을 잡아주는 것이다.

스케줄링에서는 장기, 중기, 단기 스케줄링이 있다.

 

어떤 프로세스를 ****커널에 등록****할 것이가를 정하는 ****장기**** 스케줄링,

어떤 프로세스에게 ****메모리를 할당****할 것인가를 정하는 ****중기**** 스케줄링,

어떤 프로세스에게 ****CPU를 할당****할 것인가를 정하는 ****단기**** 스케줄링이 있다.

3. 컨텍스트 스위칭

  • CPU에서 실행할 프로세스를 교체하는 기술

컨텍스트 스위칭의 순서

컨텍스트 스위칭은 크게 다음과 같은 두 동작으로 구분할 수 있다.

  1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트하여 메인 메모리에 저장
  2. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB 정보를 CPU에 넣고 실행

PCB 정보 중 PC, SP가 프로세스가 변경된 이후에 작업을 이어나갈 수 있도록 하는 점에서 중요하다.

* PCB : 인쇄회로기판

*스택 프레임 (Stack Frame) : 함수 호출 과정에서 할당되는 메모리 블럭

*스택 포인터 (SP, Stack Pointer) : 현재 스택의 위치 정보를 지니는 포인터. 이 값을 저장하는 레지스터를 sp 레지스터라 한다.

*프레임 포인터 (FP, Frame Pointer) : 함수 호출 종료시 스택 프레임의 반환을 위해 이전 스택 포인터의 정보를 지니는 포인터. 이 값을 저장하는 레지스터를 fp 레지스터라 한다.

 

4. 가상 메모리

  • 한정된 물리 메모리의 한계를 극복하고자 디스크와 같은 느린 저장장치를 활용해, 애플리케이션들이 더 많은 메모리를 활용할 수 있게 해 주는 것이다.
  • 가상 메모리는 실제 메모리의 남은 공간이 부족하게 되면 사용되는 일종의 임시 공간이다. 그래서 만약 실제 메모리의 용량이 충분하다면 거의 사용되지 않는 특성이 있다. 만약 실제 메모리 공간이 부족하여 가상 메모리가 사용되기 시작하면 위에서 이야기한 것과 같이 [실제 메모리 <-> 가상 메모리] 사이로 데이터를 옮기는 과정들이 추가되기 때문에 그만큼 시스템이 전체적으로 느려지게 된다. 특히나, 실제 메모리 공간인 램에 비해 가상 메모리 공간인 디스크는 매우 느리기 때문에 더더욱 느려지는 것이다.
  • 그래서 가상 메모리는 되도록 사용되지 않을 수록 좋다. 그럴려면 실제 메모리 즉, 램의 용량이 충분해야 한다. 하지만 꼭 메모리 공간이 부족하지 않더라도 일부 프로그램의 경우 반드시 이러한 가상 메모리를 사용하는 경우도 있다.

5. 교착 상태

프로세스가 자원을 사용하기 위해서는 반드시 사용하기 전에 요청 을 해야 하고 사용 후에는 반드시 방출해야 한다. 즉, 정상적은 작동 모드에서 프로세스는 다음 순서로만 자원을 사용할 수 있다.

  1. 요청 : 프로세스는 자원을 요청하고, 즉시 허용되지 않는 경우 자원을 얻을 때까지 대기상태에 놓이게 된다.

  2. 사용 : 프로세스는 자원에 대해 작업을 수행한다.

  3. 방출 : 프로세스가 자원을 다 사용하였다면 방출한다.

이렇게 경쟁 구도에 놓인 프로세스들은 자원을 요청하는 시점에 해당 자원이 다른 프로세스에 의해 점유되어 있으면 대기상태에 놓이게 되고 각 프로세스와 자원들이 서로 꼬리를 물며 자원을 대기하게 되는 경우 이를 교착상태 에 놓여있다고 한다. 즉, 한 프로세스 집합 내 모든 프로세스가 그 집합 내 다른 프로세스에 의해서만 발생될 수 있는 사건을 기다린다면, 그 프로세스 집합은 교착상태 에 있는 것 이다.

':: IT > 기술면접' 카테고리의 다른 글

파이썬 개발  (0) 2020.08.10
[기술면접] 데브옵스  (0) 2020.07.31
[기술면접] 네트워크  (0) 2020.07.30
[데브옵스] 데브옵스란?  (0) 2020.07.30
[운영체제] 운영체제란?  (0) 2020.07.30

+ Recent posts