본문 바로가기

study

Operating System | 운영체제 서비스, 구조, 가상 머신, 프로세스, context switch (9월 셋째 주)

 

Booting

  • Starting a computer by loading the kernel

Operating System Services

  • 사용자에게 유용한 기능을 제공하는 OS 서비스의 집합

① User Interface

  • 사용자와 컴퓨터 시스템이 만나는 지점
  • Command-Line Interface (CLI), Graphics User Interface (GUI), Batch
cf> CLI : 사용자가 텍스트 명령을 통해 명령을 내리는 인터페이스

② Program Execution (프로그램 실행)

  • 시스템은 메모리에 프로그램을 로드하고, 그 프로그램을 실행시키고, 강제적이든 그렇지 않든 실행을 끝낼 수 있어야 한다.

③ I/O Operations (입출력 명령)

  • 입출력 명령을 수행
  • 효율과 보안을 위해 운영체제를 거치도록 한다.

④ File-system Manipulation (파일-시스템 조작)

  • Programs need to read and write files and directories, create and delete them, search them, list file information, permission management.

⑤ Communications (통신)

  • 프로세스는 같은 CPU 혹은 한 네트워크 내의 CPU들 간에 정보를 주고받을 수 있다.
  • 통신은 공유 메모리 (shared memory) 혹은 message passing (메시지 패싱) 을 통해 가능
cf> 공유 메모리 (shared memory) : 여러 개의 프로세스가 메모리의 한 부분을 공유하도록 하는 것
cf> 메시지 패싱 (message passing) : 프로세스 간에 정보 패킷(packets)을 주고받는 것

 

⑥ Error Detection (에러 탐지)

  • 운영체제는 가능한 에러들을 지속적으로 탐지해야 한다.

⑦ Resource Allocation (자원 할당)

  • 다수의 사용자 혹은 다수의 job이 동시에 실행될 때, 자원이 공평하게 할당되어야 한다.

⑧ Accounting (회계)

  • 어떤 종류의 컴퓨터 자원이 얼마나, 어떤 사용자에게 쓰이는지 추적

⑨ Protection and Security (보호와 보안)

  • 동시에 실행되는 프로세스들이 서로 방해가 되서는 안 된다.

 

Process Management 관련해서 운영체제가 하는 일

  • 사용자 프로세스와 시스템 프로세스의 creation과 deletion
  • 프로세스의 suspension(보류)와 resumption(재개)
  • 프로세스 동기화, 프로세스 통신, 교착 상태 해결(deadlock handling)을 위한 매커니즘의 제공

 

Memory Management 관련해서 운영체제가 하는 일

  • 어떤 부분의 메모리가 현재 누구에게 사용되고 있는지 추적
  • 메모리 공간이 비어 있을 때 어떤 프로세스가 메모리에 로드되는지 결정
  • 필요한 메모리 공간을 할당하거나 할당 해제

 

Secondary-storage Management 관련해서 운영체제가 하는 일

  • Free-space 관리
  • Storage 할당
  • Disk scheduling

 

명령어 인터프리터 (Command Interpreter)

  • 명령어 인터프리터는 사용자 또는 명령어 파일로부터 명령어를 읽어들인 후, 명령어를 하나 이상의 시스템 호출로 변환함으로써 그것을 실행한다.
  • 그에 따라 명령어 인터프리터는 실행에 제약을 받기 때문에, 커널에 포함되지 않는다.

 

System Programs

  • 유용한 시스템 호출의 bundles로 불린다.
  • 사용자가 문제를 해결하기 위해 프로그램을 따로 짤 필요 없이 시스템 프로그램은 사용자에게 basic functionality를 제공한다.

 

Operating System Structure

MS-DOS

  • 사용자 프로그램이 입출력 루틴에 접근해 디스플레이와 디스크 드라이브에 직접 쓰기를 할 수 있었다.
  • 사용자 프로그램에 문제가 생기면 전체 시스템에 문제가 생긴다.

 

MS-DOS Layer Structure

UNIX

  • MS-DOS에서 더 진화한 구조
  • UNIX OS는 분리된 두 부분으로 이루어져 있다. (System programs, the kernel)
  • 커널에 너무 많은 일이 치중되어 있어 구현, 유지 보수가 어려운 구조이다. (Monolithic 구조)
  • 장점은 마이크로 커널을 확장하기 편리하고, 새로운 아키텍쳐에 운영체제를 이식하기 편리하며, 커널 모드에서 더 적은 양의 코드가 돌아가고, 더 보안에 강하다.

전통적인 UNIX 구조

cf> 마이크로커널 (Microkernel) : 커널에서 핵심적인 요소만 남긴 커널이다.  코드 양이 훨씬 적어 컴파일, 테스트 시간이 비교적 짧고, 다른 시스템에 이식(porting)이 가능하다. 다만, 시스템 프로그램을 추가해 기능을 늘리려고 하면 속도가 느려진다.

 

Modules

  • 커널을 확장하기 위한 기술
  • 각각의 core 요소는 분리되어 있다.
  • 장치 드라이버는 모두 모듈로 구현되어 있다.
  • 레이어와 비슷하지만 더 융통성있고 효율적

Solaris Loadable Modules

Virtual Machines

  • 각각의 가상 머신들은 다른 가상 머신들과 완벽히 고립되어 있으므로 시스템 자원을 완벽하게 보호할 수 있는 이점이 있다. 그러나 이러한 고립은 자원의 직접적인 공유가 불가능하다.
  • 저만의 운영체제를 실행하는 여러 개의 가상 머신들을 게스트 운영 체제라고 하며, 다른 장치가 충돌을 피하기 위해 각 장치에서 실행하기 위한 서버 통합(server consolidation)에서 쓰이며, 각 가상 머신에서는 같은 물리 컴퓨터에서 실행된다. 

 

Process

  • 프로그램은 실행 가능한 파일이 메모리로 로드될 때 프로세스가 된다. (one program -> multiple processes)
  • code 섹션, data 섹션, stack, heap, program counter 등을 포함한다.

 

Process State

  • new : 프로세스가 만들어질 때
  • ready : 프로세스가 CPU에 assign 되길 기다릴 때
  • running : Instruction이 실행될 때
  • waiting : 실행 중 작업이 완료되어 입출력을 기다릴 때
  • terminated : 프로세스가 실행을 끝냈을 때

프로세스 상태

Process Control Block (PCB)

  • 각각의 프로세스는 자신의 정보 묶음인 PCB를 갖고 있다.
  • 프로세스 상태, 프로세스 넘버 (ID 같은 것), 프로그램 카운터, 레지스터, 메모리 제한 등

 

Process Scheduling

  • 어떤 프로세스를 프로세서에 할당할 것인지 결정하는 일
  • 멀티프로그래밍의 목적은 CPU 활용을 극대화하기 위해서 어떤 프로세스들을 항상 실행시키는 것이고, 시분할의 목적은 프로그램이 실행될 때 사용자들이 그것과 자주 소통할 수 있게 CPU를 프로세스들로 switch하는 것이다.
  • Job queue : 시스템 내 모든 프로세스들의 집합
  • Ready queue : 실행되기를 ready, waiting 하고 있는 메인 메모리의 프로세스들의 집합

 

CPU switch

  • 프로세스가 실해오디다가 인터럽트가 발생해 운영체제가 개입하여 프로세서에 할당된 프로세스를 바꾸는 것
  • 시스템 호출을 사용해야 하는 경우 프로세스가 자체적으로 처리할 수 없기 때문에 운영체제가 개입해야 한다.
  • CPU 스위칭을 할 때는 작업 중이던 프로세스의 PCB를 백업한다.

 

Long-term scheduler

  • 레디 큐에 프로세스를 옮긴다.
  • CPU 밖에서 작업하고, 가끔 수행된다.
  • 느리다.
  • 멀티프로그래밍의 정도를 조절한다.

Shrot-term scheduler

  • 프로세스를 프로세서에 할당한다.
  • CPU 내에서 작업한다. (CPU scheduler로 불린다)
  • 빠르다.

 

Context Switch

  • 프로세서가 다른 프로세스로 스위치 할 때 시스템은 작업 중이던 프로세스의 상태를 저장하고 새로운 프로세스의 상태를 로드한다.
  • Context란? 시스템에서 활용가능한 모니터링된 정보를 뜻한다.
  • 프로세스의 context는 PCB이다. (CPU 레지스터 값, 프로세스 상태, 메모리 관리 정보 등)
  • PCB 정보가 바뀌는 것 = Context swtich
  • Context-switch 타임은 overhead이므로 너무 자주 일어나면 성능 저하가 일어난다.