본문 바로가기

프로그래밍/운영체제(OS)

(4)
프로세스 스케줄링 1. 제한적 직접 실행 원리(Limited Direct Execution) CPU를 가상화하기 위해서 운영체제는 여러 작업들이 동시에 실행되는 것처럼 보이도록 물리적인 CPU를 공유한다. 프로세스 여러개를 잠깐씩 실행하는 CPU 시분할(time sharing)을 통해 가상화를 구현할 수 있다. 제한적 직접 실행기법의 "직접 실행"이라고 하는 부분은 간단하다. 그냥 프로그램을 CPU 상에서 직접 실행시키는 것이다. 이 간단한 방식에는 크게 두 가지 문제점이 있다. (1) 프로그램을 직접 실행시키면 프로그램이 운영체제가 원하지 않는 일을 하지 않는 것을 보장할 수 없음 (2) 프로세스 실행 시 운영체제가 어떻게 프로그램의 실행을 중단하고 다른 프로세스로 전환시킬 수 있는지, 즉 시분할을 어떻게 구현할 수 있..
프로세스 1. 프로세스 운영체제는 실행중인 프로그램의 개념을 제공하는데, 이를 프로세스(process)라 한다. CSAPP에서는 프로세스를 실행중인 프로그램에 대한 운영체제의 추상화 라고 표현한다. 프로세스가 뭔지 알려면 프로세스가 무엇으로 구성되었는지 이해하면 된다. 아래 그림에서 Processor, Main memory, I/O devices 들로 Process를 추상화 했다고 말한다. 즉 이 세 가지가 프로세스의 구성요소인 것이다. 특정 순간의 프로세스를 생각해보자. 실행되는 동안 접근했거나 영향을 받은 자원의 목록이 이 세가지에 포함되어 있을 것이다. 프로세스의 구성요소를 이해하기 위해 하드웨어 상태(machine state)를 먼저 이해해야 한다. 프로그램이 실행되는 동안 하드웨어 상태를 읽거나 갱신할 ..
운영체제 개요 1. 운영체제 운영체제란 사용자, 응용프로그램과 하드웨어 사이에 있는 소프트웨어 계층이다. 운영체제는 크게 3가지 역할을 한다. (1) 응용프로그램에 편리한 interface를 제공 (2) 시스템 자원 관리 (3) 시스템 보호 운영체제는 추상화(abstraction)를 통해 사용자는 내부 복잡한 로직을 알 필요없이 운영체제가 제공하는 시스템콜 이라는 인터페이스를 통해 하드웨어의 자원을 간접적으로 사용할 수 있다. 사용자는 여러개의 프로그램을 동시에 실행시키기를 원한다. 웹브라우저에 켜놓은 여러개의 사이트들, 게임, 동영상플레이어 등등을 동시에 켜놓고 작업을 한다고 생각해 보자. 마치 컴퓨터는 동시에 수십 혹은 수백 개의 프로세스를 실행하는 것처럼 보인다. 이처럼 CPU가 여러개 존재하는 것처럼 보이는 환..
운영체제 정리 핀토스에서 구현에 치중하느라 부족했던 이론정리를 해볼까 한다. 주로 운영체제 아주 쉬운 세가지 이야기 (A.K.A OSTEP) 책을 사용해서 정리할 예정이다. 정리하는 것도 중요한 능력인 것 같다. 잘 정리해서 면접에서도 잘 써먹어보자!