👩‍💻 알고리즘/🎛️ 컴퓨터 구조 & OS

[혼공학습단 12기] 9장, 운영체제 시작하기

오브 🧙‍♂️ 2024. 7. 28. 04:24

[ 운영체제 ]

1. 정의 

실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램

 

- 모든 프로그램은 하드웨어를 필요로 한다.

- 이때 프로그램 실행에 마땅히 필요한 요소들을 (시스템) 자원이라고 하며, 프로그램 실행에 있어 반드시 필요하다. 

(ex : cpu, 메모리, 입출력 장치와 같은 컴퓨터 부품들이 그 예시)

 

- 인터넷 브라우저, 게임과 같은 프로그램과 같은 프로그램이다.

 

2. 역할 및 특징

자원을 효율적으로 분배하고 관리 ( => 정부와 비슷한 역할 )

 

- 응용 프로그램과 하드웨어 사이에서 응용 프로그램이 필요한 자원을 할당하고, 응용 프로그램이 올바르게 실행되도록 관리한다.

 

- 다른 프로그램과 마찬가지로 메모리에 적재되어야 하는데,

운영체제는 특별한 프로그램이기 때문에 컴퓨터가 부팅될 때, 메모리 내 커널 영역이라는 공간이 적재되어 실행된다.

( 커널 영역을 제외한 사용자가 이용하는 응용 프로그램이 적재되는 영역은 사용자 영역 )

 

- 한 프로그램이 CPU를 독점하면, 다른 프로그램들이 올바르게 실행될 수 없기 때문에 운영체제는 최대한 공정하게 여러 프로그램에 CPU 자원을 할당한다.

 

- 하드웨어를 조작하고 관리하는 기능을 제공하기 때문에, 코드를 직접 작성할 필요가 없다.

 

[ 커널 ]

1. 정의 

컴퓨터의 핵심기능인 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능을 담당

 

사용자가 실행하는 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지해 자원을 보호한다. 

 

 

2. 역할 및 특징

컴퓨터의 핵심기능인 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능을 담당

 

- 1차적으로 운영체제를 거쳐 접근할 수 있도록 함으로써, 문지기 역할을 수행한다. 

- 운영체제가 설치된 모든 기기에는 커널이 있다. ( => 사람의 심장, 자동차의 엔진과 비슷한 역할 )

 

[ 이중모드 ]

1. 정의 

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

 

2. 역할 및 특징

컴퓨터의 핵심기능인 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능을 담당

 

- 1차적으로 운영체제를 거쳐 접근할 수 있도록 함으로서, 문지기 역할을 수행한다. 

- 운영체제가 설치된 모든 기기에는 커널이 있다. ( => 사람의 심장, 자동차의 엔진과 비슷한 역할 )\

 

- 사용자 모드와 커널모드로 실행 방법이 갈린다.

1. 사용자 모드

- 일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행된다.

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

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

- 하드웨어 자원에 접근하는 명령어를 실행할 수 없다.

 

2. 커널 모드

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

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

- 하드웨어 자원에 접근하는 명령어까지 모두 실행할 수 있다.

 

시스템 호출

- 사용자 모드로 실행되는 프로그램이 자원에 접근하기 위해 운영체제에 요청을 보내 커널 모드로 전환될 때 필요한 요청

=> 이를 통해 커널 모드로 전환되어 서비스를 제공받을 수 있다.

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

 

[ 운영체제의 핵심 서비스 ]

1. 프로세스 관리

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

- 하나의 CPU는 하나의 프로세스만 실행할 수 있기에 여러 개의 프로세스의 실행을 전환하는 것을 반복하는데, 이 다양한 프로세스를 관리하고 실행하는 역할을 수행한다.

 

2. 자원 접근 및 할당

- 실행을 위해 자원을 필요로 하는 프로세스들이 사용할 자원에 접근하고 조직함으로써 프로세스에 필요한 자원을 할당해 준다.

 

2-1. CPU

- 한 번에 하나의 프로세스만 실행할 수 있는 CPU에게 어떤 순서로, 얼마나 할당할지 스케줄을 짠다.

 

2-2. 메모리

- 메모리에 적재된 다양한 크기와 주소를 가진 프로세스들을 어느 주소에 적재해야 할지 결정한다.

 

2-3. 입출력장치

- 인터럽트를 처리하는 서비스 루틴을 제공해 입출력작업을 수행한다. 

 

3. 파일 시스템 관리

파일들을 폴더로 묶어 관리한다.