본문 바로가기
전공/OS

CH02. Operating System Overview (2)

by 임 낭 만 2024. 4. 23.

Major Achievements

OS가 하는 주요 기본 기능들. 방법은 조금 다르지만 다 이런 기능들을 갖고 있음 

1. Processes

  • 실행 중인 프로그램을 관리하기 위해서 OS가 사용하는 자료구조
  • OS는 프로그램을 프로세스 안에 집어넣고 관리함. (시스템마다 프로세스에 어떤 정보를 집어넣는지 .. 등에 대해서는 시스템마다 다름. BUT! 프로세스를 사용해서 관리한다는 것은 다 동일함)

2. Memory Management

  • 프로그램이 처음에 실행파일 형태로 하드디스크에 있음. →  실행을 시작하면 프로세스 형태가 되어서 메인 메모리로 올라옴
  • 메인 메모리가 항상 공간이 넉넉하지 않음. 일부만 올려넣기에도 공간이 넉넉하지 않을 때가 있음. → 프로세스가 하드디스크로 완전히 쫓겨나가는 상황도 있음. 
  • 실행 파일이 프로세스가 되어서 메모리에 올라왔다가 다시 프로세스 형태로 하드디스크로 내려왔다가(파일 형태가 아님) 다시 메모리로 왔다갔다 하며 작업함. ⇒ 이것을 Virtual Memory System이라고 부름.
  • 실제 메모리는 진짜 메모리고, 하드 디스크 안에 있는 프로세스들도 사실 다 메모리 안에 있는 것이기 때문에, 전부 합쳐서 가상의 메모리 공간에 모두 프로세스가 들어있다고 함

3. information protection and security

information protection

  • 혼자 사용하는 시스템이 아니라 여러 사람과 같이 사용하는 시스템이라고 한다면, 각각의 user마다 자기가 사용할 수 있는 정보들이 정해져있음.
  • 정보에 대한 권한들이 정해져있음.
  • 권한을 설정하고 다른 사람이 정보들을 사용하지 못하게 하는 것.
  • A가 B의 데이터를 사용하지 못하게 함

security

  • 등록되지 않은 user가 시스템에 들어와서 다른 사람의 데이터를 막 사용하는 상황을 막기 위해서

4. scheduling and resource management

scheduling

  • CPU가 시스템 안에 하나가 있고 실행시키려는 프로그램은 수십, 수백개임.
  • 아무리 CPU가 많아도 CPU의 숫자보다는 실행하려고 하는 프로세스의 숫자가 훨씬 많음
  • OS가 이 프로세스들을 효율적으로 실행을 시키려면 어떻게 실행시켜야 하는지 결정해야 함
  • 프로세스의 종류와 프로세스가 시스템 안에서 하는 행동들 등에 따라서 우선순위가 달라짐.
  • CPU를 차지하는 것도 우선순위에 따라서, timeout에 대한 시간 간격도 우선순위에 따라 달라짐. 

resource management

  • 시스템 안에는 CPU, 메인 메모리, I/O Device 같은 하드웨어적인 자원들 이외에 다른 자원들이 굉장히 많음
  • 이들을 어떻게 관리할 것인가

Modern Operating Systems

어떤 OS는 가지고 있고 어떤 OS는 가지고 있지 않음. 

Microkernel architecture

  • 커널 : OS 프로그램 중에서 굉장히 중요하고 자주 사용되는 function ⇒ 항상 메모리에 있어야 함
  • 이러한 커널을 정말 최소한으로 만듦. 정말 꼭 필요한 항상 메모리에 있어야 되는 그런 정보들만 아주 작은 마이크로커널로 만듦
  • 마이크로커널을 제외한 나머지 부분들은 OS 프로세스(프로그램을 실행시키기 위해서 사용하는 자료구조)로 만들어서 실행을 시킴. 즉, 나머지 OS 서비스들은 별개의 프로그램으로 실행을 시킬 것임.
  • 가장 대표적인 시스템이 Windows 시스템임. 

Windows Architecture

Figure 2.14 Windows Architecture

아래에서 두 번째 줄에 kernel이 있음. 이것이 바로 Microkernel
그 위에 파란색 박스들이 있음. 이것이 바로 OS Service
하나의 OS 서비스를 하나의 박스로 표현한 것임.
여러 가지 OS 서비스들을 별개의 프로그램(프로세스)으로 만들어서 실행을 시킴

Object Oriented Design을 따라서 설계가 됨

  • 파란색 하나 하나는 별개의 object이고, object와 object 사이에는 직접적인 통신을 하지 않음. → 만약 object 사이에 통신이 필요하면 커널을 거쳐서 함.
  • 만약 어떤 모듈 하나를 수정한다고 하면, 그 모듈과, 그 모듈이 커널과 만나는 부분만 수정하면 됨. ⇒ 확장성이 좋음
  • 이렇게 시스템을 만들게되면 확장성이 좋아서 새로운 디바이스가 나와서 새로운 모듈을 추가할 때에 또는 기존에 있는 모듈을 삭제할 때, 또는 모듈의 내용을 일부 수정해야 될 때, 굉장히 간편하게 할 수 있음.
  • OS는 끊임없이 업그레이드가 됨.

 

Unix Architecture

Figure 2.16 Traditional UNIX Kernel

 

유닉스는 파란색 부분이 커널임. 한 덩어리로 되어있는 굉장히 큰 kernel
이 안에 굉장히 많은 function들이 있고, 이 function들이 서로 호출하고 return하면서 작업을 함.
각각의 function에서 사용하는 자료 구조들이 전부 포인터로 연결되어있음. → 무언가를 하나 고치려면 그 모듈과 관련된 function들을 쭉 따라가서 어디를 고쳐야 하는지 다 파악해야됨. ⇒ 이것이 쉽지가 않음.
속도가 빠름 

유닉스나 리눅스는 확장성이 좋지 않음. 수정하려고 하면 엄청나게 복잡함.

 

Multithreading

  • 프로그램 안에 여러 개의 function이 있음. 순차적으로 함수를 실행하는 것이 아니라, 동시에 실행하여 실행 시간을 줄이는 것. ⇒ 프로그램의 실행 시간이 빨라진다
  • 내 프로그램의 일부를 스레드로 만들어서, 동시에 실행을 시키는 방식 : 멀티 스레딩 ⇒ 빠르게 프로그램을 실행시킬 수 있다.
  • CPU가 하나인 시스템에서 멀티 스레딩을 이용하면 I/O 작업을 하는 동안 내 프로그램의 다른 스레드를 작업 시키면서 속도를 높일 수 있음. BUT 그것보단 여러 개의 프로세서가 있는 시스템에서의 멀티 스레딩이 더 효과적임

 

Symmetric multiprocessing (SMP)

  • 여러 개의 프로세서를 가지고 있는 시스템.
  • 시스템의 CPU가 수십 개, 수백 개가 됨… ⇒ 여러 프로그램들을 동시에 실행시킬 수 있고, 한 프로그램에 여러 스레드들을 동시에 실행시킬 수 있음.
  • BUT 메모리는 하나임. → 동시에 시스템 안에 있는 자원들을 access 하는 작업을 OS가 하게 되면, 시스템은 잘 못된 실행 결과를 내게 됨. ⇒ OS에서 가장 중요한 것은 동기화임
  • CPU가 많아질수록 OS 코드는 복잡해질 것임.

 

Distributed operating systems

별도의 CPU, memory, I/O device를 갖고, 별도의 OS를 가지고 있는 PC를 네트워크 연결 → 기존 OS위에 distributed OS를 깔아서 하나의 시스템처럼 사용.

 

Object-oriented design


Modern UNIX Architecture

 

Microkernel 사용


Linux Kernel Components

 

Microkernel 사용 ❌, 전부가 OS

속도가 매우 빠름

별도의 프로세스로 나누어 사용을 하지 않음 


Android System Architecture

 

Microkernel 사용

'전공 > OS' 카테고리의 다른 글

CH03. Process Description and Control (2)  (0) 2024.04.23
CH03. Process Description and Control (1)  (0) 2024.04.23
CH02. Operating System Overview (1)  (1) 2024.04.23
CH01. Computer System Overview (3)  (0) 2024.04.23
CH01. Computer System Overview (2)  (0) 2024.04.22

댓글