CS 공부

[CS] {운영체제} 운영체제란?

ogh4554 2025. 4. 16. 12:17

1. 운영체제를 알아야 하는 이유

▶ 운영체제란?

  • 실행한 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
  • 운영체제는 커널영역에 적재되는 프로그램
  • 응용프로그램을 메모리 내 빈공간에 주소를 할당
  • CPU도 관리
  • 입출력장치 관리
  • 하드웨어와 응용프로그램간의 연결다리

-> 운영체제 덕분에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요가 없음!

 

> 운영체제는 프로그램을 만드는 프로그램이다

=> 그렇기에 프로그램을 만드는 개발자는 운영체제를 알아야 한다!

 


2. 운영체제의 큰 그림

1) 커널

- 운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나

- 이러한 운영체제의 핵심 서비스를 담당하는 부분을 '커널'이라고 함.(이하 운영체제는 커널을 뜻함. 특별 언급은 제외)

(= 자동차의 엔진, 사람의 심장)

 

> 운영체제에는 속하지만 커널에는 속하지 않는 기능 : UI(유저 인터페이스)

: 사용자와 컴퓨터 간의 통로일 뿐 운영체제의 핵심기능(커널)은 아님

 

2) 이중모드와 시스템 호출

Q. 사용자가 실행하는 프로그램은 자원에 직접 접근할 수 있을까?

A. 안됨. 자원에 직접 접근은 위험하다.

-> 운영체제는 응용 프로그램들이 자원에 접근하려 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호

 

(1) 이중모드

: CPU가 명령어를 실행하는 모드를 크게 사용자 모드커널 모드로 구분하는 방식

a. 사용자 모드

- 운영체제 서비스를 제공받을 수 없는 실행 모드

- 커널 영역의 코드를 실행할 수 없는 실행 모드

- 자원 접근 불가

 

b. 커널 모드

- 운영체제의 서비스를 제공받을 수 있는 실행 모드

- 자원 접근을 비롯한 모든 명령어 실행 가능

 

(2) 시스템 호출(시스템 콜)

: 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 방법

- 커널모드로 전환하여 실행하기 위해 호출

- 일종의 소프트웨어 인터럽트!

 

3) 운영체제의 핵심 서비스

(1) 프로세스 관리

- 프로세스(태스크) == 실행중인 프로그램

- 수많은 프로세스들이 동시에 실행

- 동시다발적으로 생성/실행/삭제되는 다양한 프로세스를 일목요연하게 관리

 

(2) 자원 접근 및 할당

a. CPU 스케줄링 : 어떤 프로세스를 먼저, 얼마나 오래 실행할지

 

b. 메모리 (페이징, 스와핑 등)

 

c. 입출력장치

 

(3) 파일 시스템 관리

- 관련된 정보를 파일이라는 단위로 저장 장치에 보관

- 파일들을 묶어 폴더(디렉토리) 단위로 저장 장치에 보관