Written by JS970
on
on
운영체제 2023-03-08 수업정리
Flow
- 운영 체제의 정의 및 primary components
- 컴퓨터의 부팅 과정
- System Call
- Virtualization
- Persistence
운영 체제의 정의 & primary components
현대 컴퓨터 시스템은 사용자, 소프트웨어 영역, 운영 체제, 하드웨어 영역으로 나눌 수 있다. 운영 체제는 소프트웨어 어플리케이션이 하드웨어 자원을 효율적으로 사용할 수 있도록 하는 소프트웨어이다.(제한된 HW자원을 효율적으로 프로세스에 할당한다.)
- resource allocator : 앞서 말한 것처럼 운영 체제는 하드웨어 자원을 프로세스에 효율적으로 할당하는 역할을 한다.
- control program : 예기치 못한 에러 및 부적절한 컴퓨터의 사용이 일어나지 않도록 프로그램의 실행을 관리하는 역할을 한다.
- 결국 운영 체제는 아래와 같은 동작을 수행해야 한다.
- 프로그램이 효율적으로 동작하도록 해야 한다.
- 프로그램들이 메모리를 공유하도록 관리해야 한다.
- 하드웨어 자원과 프로그램이 상호작용 할 수 있도록 동작해야 한다.
- 이 이외에도 운영 체제는 아래와 같이 설명할 수도 있다.(참고)
- 컴퓨터가 동작하는 동안 항상 동작하는 kernel
- system program 또는 Application Program
컴퓨터의 부팅 과정
본 단에서는 윈도우 등 현대 운영 체제를 탑재한 일반적인 컴퓨터의 부팅 과정에 대해 간단히 설명한다.
- POST phase
- HW디바이스가 잘 연결되어 있는지 확인하는 단계이다.
- basic filesystem drivers를 load 한다.
- Initial Startup phase
- MBR(Master Boot Record, 부트로더를 저장하고 있는 파티션이 있는 하드디스크의 첫번째 섹터)에서conf.file을 load하고 read한다.
- MBR을 로드하기 위해서는 ROM에 존재하는 firmware가 필요하다.
- BootLoad
- Kernel Loading
- 이 단계에서 인증 모듈 등이 동작한다.
- 부팅 완료
운영 체제가 실행되고 난 후에는 어떠한 event가 일어나는 것을 기다린다. -> 인터럽트 driven방식으로 동작하기 때문.
- 인터럽트 방식은 하드웨어 인터럽트 방식과 소프트웨어 인터럽트 방식이 있다.
- 하드웨어 인터럽트 방식은 인터럽트 버스를 통해 직접 신호를 주는 인터럽트 방식이다.
- 소프트웨어 인터럽트 방식은 HW인터럽트와 달리 융통성을 발휘할 수 있다. trap이라고도 불린다.
- 하지만 인터럽트가 너무 자주 발생하면 좋을 것이 없으므로 DMA등의 방식을 사용해 효율적으로 처리한다.
System Call
- System Call은 사용자가 OS에 어떠한 행동을 해야 하는지를 알려주는 역할을 한다.
- OS는 API, STL등을 이용하여 이러한 인터페이스를 제공한다.
- 대부분의 운영체제는 수백 개 정도의 System Call 을 제공한다.
- 프로그램 실행 관련
- 메모리 접근 관련
- 디바이스 연결 관련
Virtualization
OS는 물리적인 자원을 가상 형태의 자원으로 바꾼다.
- CPU, Memory자원을 여러 프로세스에서 공유하는 것을 생각하면 이해하기 쉽다.
- 이러한 virtual form이 더 일반적이고, 강력하며 사용하기 쉽다.
- OS자체를 virtual machine이라고 명명하기도 한다.
- 현대의 다중 스레드 프로그램들은 동시성 문제를 가질 수밖에 없다.
- OS의 가상화 기능을 통해 효율적으로 사용할 수 있지만 comcurrency issue의 원인이 되기도 한다.
Persistence
- 앞서 설명한 가상화를 통해 여러 프로세스에서 같은 메모리에 System Call을 통해 접근하는 경우가 발생할 수 있다.
- File system은 이러한 crash문제를 막아야 한다.(Journaling이라고 한다.)
- 파일 시스템 역시 운영 체제에 포함되는 것으로 보기도 한다.