기술 면접 준비

[운영체제] 운영체제는 프로그램이다?! - 1/5

Lea Hwang 2023. 3. 31. 21:41

면접 스터디 주제인 '운영체제'를 더 잘 이해하기 위해 도서와 영상을 통해 정리해 보고 마지막에는 핵심 질문을 뽑아보는 시간을 가져보도록 하겠습니다.

 

 

전공자 분들과 스터디를 하다 보니 간단한 대화 속에서도 배우는 점도 많고 저 또한 깊게 배우고 싶다는 의지가 활활 불타오르고 있습니다. 자리를 빌어서 감사 말씀드립니다. 지훈 님, 민지 님 감사합니다.👊

때리는 게 아닌, Hey~ Bro~ 느낌......

 

그 중에서도 chapter 9 ~ chapter 13 부분을 다루어보도록 하겠습니다. 

 

목차

Chapter 09 운영체제 시작하기

09-1 운영체제를 알아야 하는 이유
__운영체제란
__운영체제를 알아야 하는 이유

09-2 운영체제의 큰 그림
__운영체제의 심장, 커널
__이중 모드와 시스템 호출
__운영체제의 핵심 서비스

Chapter 10 프로세스와 스레드

10-1 프로세스 개요
__프로세스 직접 확인하기
__프로세스 제어 블록
__문맥 교환
__프로세스의 메모리 영역

10-2 프로세스 상태와 계층 구조
__프로세스 상태
__프로세스 계층 구조
__프로세스 생성 기법

10-3 스레드
__프로세스와 스레드
__멀티프로세스와 멀티스레드

Chapter 11 CPU 스케줄링

11-1 CPU 스케줄링 개요
__ 프로세스 우선순위
__스케줄링 큐
__선점형과 비선점형 스케줄링

11-2 CPU 스케줄링 알고리즘
__스케줄링 알고리즘의 종류

Chapter 12 프로세스 동기화

12-1 동기화란
__동기화의 의미
__ 생산자와 소비자 문제
__공유 자원과 임계 구역

12-2 공유 자원과 임계 구역
__뮤텍스 락
__세마포
__모니터

Chapter 13 교착 상태

13-1 교착 상태란
__식사하는 철학자 문제
__자원 할당 그래프
__교착 상태 발생 조건

13-2 교착 상태 해결 방법
__교착 상태 예방
__교착 상태 회피
__교착 상태 검출 후 회복

 

 

이번 포스팅에서는  chapter 9를 정리해 보도록 하겠습니다. 

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

운영체제는 무엇이고, 개발자는 왜 운영체제를 알아야 할까요? 

컴퓨터 부품들에 전기만 공급하면 마법이 일어나서 저절로 작동하는 게 아닙니다.

운영체제가 바로 이들을 동작하게 하는 핵심 프로그램인데요. 동시에 모든 프로그램은 실행을 위해 자원을 필요로 합니다. 

 

 

운영체제는

실행할 프로그램에 필요한 자원을 할당해주고

프로그램이 올바르게  실행되도록 돕는 프로그램입니다. 

* 운영체제는 메모리 영역 중 커널 영역에 적재되는 프로그램

 

 

운영체제의 다양한 종류

 

 

운영체제의 다양한 임무

- 운영체제의 메모리 관리

새롭게 사용하는 프로그램을 메모리의 적당한 위치에 적재하고 사용하지 않는 프로그램이 있다면 깨끗하게 비워줍니다.

 

- 운영체제의 CPU관리

여러 응용 프로그램을 CPU가 빠르게 번갈아가면서 실행하는데, 이때 운영체제는 어떤 프로그램을 먼저, 나중에, 오랫동안 실행할지의 문제를 결정합니다.

 

- 운영체제의 입출력 장치 관리

프린터를 사용한다면, 프로그램들의 사용 순서를 결정합니다.

 

 

구조를 그림을 통해 살펴보겠습니다. 

 

 

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

그런데 개발자는 운영체제를 왜 알아야 할까요?

이는 반대로 운영체제 없이 프로그램 개발한다면 어떨지 생각해 보면 쉽습니다. 

 

운영체제가 없다면, 개발자는 하드웨어에 접근하는 코드를 하나하나 직접 개발해야 합니다.  

 

 

운영체제는 사용자를 위한 프로그램은 아닙니다. 프로그램을 위한 프로그램입니다. 

그렇기에 프로그램을 만드는 개발자는 운영체제를 알아야 합니다. 

 

운영체제에게 많은 도움을 받고 있음과 동시에 하드웨어에 문제가 생기면 가장 먼저 운영체제가 알게 됩니다. 운영체제는 문제가 생기면 사용자에게 오류 메시지를 보내게 되는데요. 운영체제를 잘 이해하면 해당 오류 메시지를 깊이 이해할 수 있고 이는 곧 문제 해결 능력 향상으로 이어지게 됩니다. 

 

운영체제의 큰 그림

운영체제가 어떤 것들을 해주는지 큰 그림 그려보겠습니다. 여기서는 크게 3가지에 대해 배울 것입니다. 

  • 커널
  • 운영체제의 서비스 종류
  • 시스템 콜(시스템 호출)과 이중모드

운영체제의 심장, 커널

운영체제의 종류가 다양한 만큼 제공하는 기능도 다양하지만 어디에도 적용가능한  핵심적인 서비스는 존재합니다. 예를 들어 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 등이 있는데요.

 

 

이러한 운영체제의 핵심 서비스를 담당하는 부분을 커널(kernel)이라고 합니다. 

 

따라서 앞으로 운영체제에 대한 설명을 할 때, 특별한 말이 없다면 커널을 지칭한다고 봐도 무방할 것입니다.

운영체제에는 속하는데 커널에는 속하지 않는 기능에는 어떤 게 있을까요?
UI가 대표적입니다. 

커널이 제공해 주는 기능들

부제: 이중모드와 시스템 호출

 

여기서 문제 하나 나갑니다.

 

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

 

 

 

NO 아닙니다. 그리고 가능해서도 안됩니다. 

만약 가능하다면 일반 프로그램들이 CPU에 접근할 때 순서가 꼬일 수도 있고, SSD 접근 시 이미 저장한 내용이 날아갈 수 도 있습니다.

 

 

운영체제는 응용 프로그램들이 자원에 접근하려할 때오직 자신을 통해서만 접근하도록 해서 자원을 보호하며 이는 이중모드로 구현이 됩니다.

 

이중 모드

CPU는 명령어를 계속해서 실행하는데, 크게 사용자 모드커널 모드로 구분할 수 있습니다. 

이중모드는 CPU가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분하는 방식입니다. 

  • 사용자 모드
    • 운영체제 서비스를 제공받을 수 없는 실행 모드
    • 커널 영역의 코드를 실행할 수 없는 실행 모드
    • 자원 접근 불가
  • 커널 모드
    • 운영체제의 서비스를 제공받을 수 있는 실행 모드 (운영체제의 도움을 받을 수 있음)
    • 자원 접근을 비롯한 모든 명령어 실행 가능

 

그럼 언제 사용자 모드가 커널 모드로 바뀌는지 궁금하실 수 있습니다.

시스템 호출을 하면 커널 모드로 전환이 됩니다. 

* 시스템 호출은 일종의 소프트웨어 인터럽트입니다.

 

 

운영체제의 핵심 서비스

부제: 운영체제에게 어떤 도움을 받을까?

  • 프로세스 관리
  • 자원 접근 및 할당
  • 파일 시스템 관리

프로세스 관리

메모리에 적재되어 실행 중인 프로그램프로세스라하고 수많은 프로세스들은 동시에 실행됩니다.

작업 관리자에서 프로세스 탭을 보면 얼마나 많은 프로세스들이 동시에 실행되는지 눈으로 확인해 볼 수 있습니다. 

 

운영체제는 동시다발적으로 생성/실행/삭제되는 다양한 프로세스를 관리해서 문제가 발생하지 않게 합니다.

 

 

그럼 우리는 운영체제가 이를 어떻게 관리하는지 알아봐야 합니다. 다음의 개념들을 학습하면서 알아가 보도록 하겠습니다. 

  • 프로세스, 스레드
  • 프로세스 동기화
  • 교착상태 해결

자원 접근 및 할당

여기서 말하는 '자원'은 크게 3가지로 나눠 볼 수 있습니다. 

  • CPU
    • CPU 스케줄링 : 어떤 프로세스를 먼저 할당하고, 얼마나 오래 실행할까?
  • 메모리
    • 페이징, 스와핑...
  • 입출력장치
    • 인터럽트 서비스 루틴 제공

파일 시스템 관리

파일과 폴더에 관해 배웁니다. 관련된 정보를 파일이라는 단위로 저장 장치에 보관하고 파일들을 묶어 폴더(디렉터리) 단위로 저장 장치에 보관합니다. 

 

 

이번 포스팅에서는 대략적으로 운영체제는 어떤 건지, 우리가 왜 알아야 하고 어떤 기능들을 제공해주고 있는지 살펴봤습니다. 다음 포스팅부터 하나씩 자세히 학습해 보도록 하겠습니다. 

 

 

 

 

 

 

 


 

관련 포스팅:

1. [운영체제] 운영체제는 프로그램이다?! - 1/5

2. [운영체제] 프로세스와 스레드 - 2/5

3. [운영체제] CPU 스케줄링 알고리즘 - 3/5

4. [운영체제] 프로세스와 스레드의 동기화 - 4/5

5. [운영체제] 교착 상태(데드락, Deadlock) - 5/5

 

 

출처:

혼자 공부하는 컴퓨터구조+운영체제 도서

혼자 공부하는 컴퓨터구조+운영체제 강의