운영체제 - 시작하기

김가영·2021년 5월 29일
6

computer-science

목록 보기
1/11
post-thumbnail

CS 공부를 시작하기로 했다.
비전공자로 시작했기 때문에 현재 지식 상황은 0

쉽지 않은 여정이 될 것 같기에 처음부터 너무 deep하게 공부하기보다는,

  • 일단 전체적인 흐름을 파악하며 간략하게 공부한 후
  • 면접에 자주 나오는 유형들은 좀 더 detail하게 정리해갈 것 같다.

그래서, 일단은 굉장히 굉장히 기초적이고 러프할 예정~~~ 나같은 아무것도 모르는 사람에게 설명해준다고 생각하고 간단하게 정리해나갈라고 한다 😤

시작하기

운영체제 교재로는 가장 유명한 공룡책을 샀다. 사실 구매한 지는 몇 달 됐는데 이제서야 펼치게 됐다. 아무래도 전공책으로 많이 쓰이다보니 내용이 굉장히 많고, 어디까지 공부를 해야할 지가 굉장히 막막했다. 그래서 인프런에서 주니온 님의 운영체제 공룡책 강의를 참고하기로 했다. 확실히 중요한 내용만 탕탕탕 정리해주시고 실습까지 있어서 공부하기가 참 좋았다. 처음부터 너무 좋은 강의로 시작하게 돼서 네트워크나 다른 부분들을 책으로만 공부할 수 있을지 걱정이 될 정도.

운영체제? 프로그램?

운영체제가 뭔지를 배우기 전에, 프로그램은 뭘까?
프로그램은 간단하게, 명령어 집합 이다. 여러 명령어들을 한 줄 한 줄 모아놓은 것이 바로 프로그램이다. 하지만 우리는

int x = 1;
x += 10;

과 같이 아무런 의미 없는 코드 집합들을 프로그램이라고 부르지는 않는다. 그래서 이를 포함하여 프로그램에 대해 정의하면 프로그램은 컴퓨터 하드웨어에게 특정 task를 수행시키는 명령어 집합이라고 이야기할 수 있다.


운영체제 또한 이러한 프로그램 중 하나이다.

기본적으로 컴퓨터는 기계들의 집합인 하드웨어로 생성된다. 모니터나 자판, 메모리같이 우리가 직접 만질 수 있는 기계들 말이다. 이러한 하드웨어들을 기본적으로 관리해주는 것이 바로 운영체제이다. 그럼 운영체제가 없으면 하드웨어들을 이용하지 못하겠네? 맞다. 그래서 운영체제의 다양한 정의들 중 일반적으로 받아들여지는 정의가 바로 컴퓨터에서 항상 실행되는 프로그램 이라는 정의이며, kernal이라고 부르기도 한다.

운영체제의 개념과 구조

그래서 운영체제는 하드웨어를 관리하는, 컴퓨터에서 항상 실행되는 프로그램 중 하나이다.

4 components of computer system

  1. user
  2. system & application apps (compiler, text editor...)
  3. operating system
  4. hardwares

bootstrap program

  • 컴퓨터가 켜졌을 때, CPU가 가장 먼저 실행해야 할 명령어 set
    메모리에 OS를 로딩하는 역할을 한다.

mutliprogramming, multitasking

multiprogramming

여러개의 프로그램들을 동시에 메모리에 적재하여 실행하는 것을 말한다. 프로그램들을 동시에(simulatenously, concurrently) 실행시키며 CPU utilization을 증가시킨다.

multitasking (= multiprocessing)

multiprogramming의 논리적인 확장이다. 프로그램들을 동시에 작동시키기 위해 CPU는 할당된 job을 빠르게 갈아치움으로써 실제로는 작업을 한 번에 병렬적으로(parellel) 작동시키지 않으면서도 유저가 프로그램을 동시에(concurrently) 접근할 수 있게 한다.

system call

OS가 application program들에 서비스를 제공하기 위한 interface이다
API : Application Programming Interface
→ OS의 system call 들에 대한 정보를 제공한다. 각 함수에 전달돼야 할 parameter들과 return 값들을 포함하여 응용 프로그래머가 사용가능한 함수 집합을 명시한다.

Interrupts

운영체제와 하드웨어 상호작용 방식의 핵심

시스템버스를 통해 컨트롤러가 드라이버에게 작업 완료/에러 발생을 알려주기 위해 이용된다.

  • 드라이버는 특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램

implementation

장치 컨트롤러가 작업이 끝나거나, 에러가 발생했을 때 인터럽트(raise)를 발생시킨다 → CPU는 인터럽트를 포착(catch)하여 인터럽트 핸들러로 dispatch 한다 → 핸들러는 장치를 서비스하여 인터럽트를 지운다(clear).

CPU는 어떻게 인터럽트를 포착(catch)할까?

CPU 하드웨어의 interrupt request line 을 이용한다. 명령어 하나를 실행할때마다 CPU는 이 선을 감지한다.

profile
개발블로그

0개의 댓글