Jost Do It.

그냥 IT해.

Study/컴퓨터공학

[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 Chapter 9 운영체제 시작하기

그냥하Jo. 2022. 11. 25. 08:06
반응형

Chapter 9. 운영체제 시작하기

 

 

요약

운영체제의 개요와 운영체제가 하드웨어의 시스템을 어떻게 통제하는지 이해할 수 있었다.

 

 

내용 정리

 

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

 

운영체제란

 

운영체제(Operating system)

  • 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램
    • 시스템 자원: 프로그램 실행에 필요한 요소들로 줄여서 자원이라고도 부름

 

  • 근본 프로그램이기 때문에 컴퓨터가 부팅될 때 메모리의 커널 영역 내에 따로 적재돼 실행된다.
    • 커널 영역(kernel space): 운영체제가 메모리에 적재되는 공간
    • 사용자 영역(user space): 커널 영역을 제외한 영역으로 사용자가 이용하는 응용 프로그램이 적재되는 공간
    • 응용 프로그램(application software): 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램

 


 

운영체제의 역할

1. 지속적인 메모리 자원 관리

  • 실행할 프로그램을 메모리 사용자 영역에 적재
  • 더 이상 실행되지 않는 프로그램은 메모리에서 삭제

 

2. 공정하게 여러 프로그램을 CPU 자원에 할당

  • 특정 프로그램이 CPU를 독점하면 다른 프로그램은 실행이 어렵기 때문에 스케쥴링 역할을 운영체제가 함

 

3. 관리할 자원별로 기능을 분리함

  • 운영체제 내에 CPU, 프로세스, 파일 시스템, 메모리 등 각 자원별로 관리하는 기능을 분리함

 

4. low단계 하드웨어 조작 코드를 작성할 필요가 없음

  • 운영체제에 의해 하드웨어가 조작되고 관리되기 때문에 개발자가 하드웨어를 조작하는 코드를 직접 작성할 필요 적음

 


 

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

 

  • 운영체제에서 제공하는 아래 정보들을 통해 문제 발생 시 해결할 방법들을 찾을 수 있다.
    • 현재 하드웨어들의 상태
    • 코드가 어떻게 실행되었는지
    • 하드웨어 상에 존재하는 문제들

 

  • 이를 통해 하드웨어와 프로그램을 더 깊이 이해할 수 있음

 


 

09-2. 운영체제의 큰 그림

 

사전 지식

  • 운영체제는 현존 프로그램 중 가장 규모가 큰 프로그램이다.
  • 운영체제는 사용자를 위한 프로그램이기 보다는 사용자가 실행할 프로그램을 위한 프로그램이다.

 


 

커널(kernel)

  • 운영체제의 핵심 서비스를 담당하는 부분
  • 운영체제가 설치된 모든 기기에는 커널이 존재한다.
  • 어떤 커널을 사용하는지에 따라 응용 프로그램이 하드웨어를 이용하는 방법이 달라지고, 컴퓨터의 성능도 달라지게 된다.

 

사용자 인터페이스(UI, User Interface)

  • 운영체제가 제공하는 서비스 중 커널에는 포함되지 않는 서비스
  • 사용자가 컴퓨터와 상호작용할 수 있는 통로로 윈도우 바탕화면을 예로 들 수 있다.
  • 사용자 인터페이스에는 그래픽 유저 인터페이스커맨드라인 인터페이스가 있다.

 

그래픽 유저 인터페이스(GUI; Graphic User Interface)

  • 그래픽을 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스

 

커맨드라인 인터페이스(CLI; Command Line Interface)

  • 명령어 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스

 


 

이중 모드와 시스템 호출

 

응용 프로그램의 하드웨어 접근

  • 운영체제는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호한다.
  • 응용 프로그램들은 자원 접근 시, 운영체제에 자원 접근 요청을 한다.
  • 운영체제는 요청받은 작업을 직접 자원에 접근해 수행한다.
  • 위 접근 방식을 위해 운영체제는 이중 모드를 이용한다.

 

 

이중 모드(dual mode)

  • CPU가 명령어를 실행하는 모드를 아래 두가지로 분리함
    • 사용자 모드
    • 커널 모드
  • CPU는 명령어를 사용자 모드와 커널 모드로 모두 실행 가능하지만, 응용 프로그램은 사용자 모드로만 실행 가능
  • CPU 모드는 플래그 레티스터 속 슈퍼바이저 플래그에 표시된다.

 

 

사용자 모드(user mode)

  • 운영체제 서비스를 제공 받을 수 없는 실행모드
  • 커널 영역의 코드를 실행할 수 없다.
    • ex. 입출력명령어와 같이 하드웨어 자원에 접근하려는 명령어
  • 일반적인 응용 프로그램은 사용자모드로 실행되며, 프로그램 단독으로 자원에 접근할 수 없다.

 

 

커널 모드(kernel mode)

  • 운영체제 서비스를 제공받을 수 있는 실행모드
  • 커널 영역의 코드를 실행할 수 있다.
    • ex. 자원에 접근하는 명령어 등 모든 명령어를 실행할 수 있다.
  • 운영체제는 커널모드로 실행되며, 프로그램은 운영체제를 통해서 자원에 접근할 수 있다.

 

 

시스템 호출(system call)

  • 사용자 모드로 실행되는 프로그램이 운영체제 서비스를 제공받기 위해 운영체제에 보내는 요청
  • 시스템 호출을 통해 프로그램은 운영체제 서비스 (커널 모드)를 제공받을 수 있다.
  • 시스템 호출은 일종의 소프트웨어 인터럽트로 볼 수 있다.
    • 소프트웨어 인터럽트:  특정 명령어에 의해 발생하는 인터럽트
  • 응용 프로그램 실행 과정에서 운영체제 서비스는 매우 빈번하게 이용된다.
    • 따라서 빈번하게 시스템 호출이 발생되며, 프로그램은 사용자 모드와 커널 모드를 오가며 실행된다.

 

 

시스템 호출 과정

1. 응용 프로그램이 운영체제에 시스템 호출 전송

2. CPU는 지금까지의 응용프로그램 작업을 백업 및 커널 모드로 전환

3. 커널 영역 내 시스템 호출을 수행하는 코드 (인터럽트 서비스 루틴) 실행

4. 사용자 모드 전환 후 기존에 실행하던 응용프로그램으로 복귀 및 실행 재개

 


운영체제의 핵심 서비스

 

1. 프로세스 관리

  • CPU는 프로세스들을 번갈아가며 실행한다.
    • 프로세스(process): 실행 중인 프로그램
  • 이를 위해 운영체제는 다양한 프로세스를 관리하고 적절히 실행할 수 있어야 한다.
  • 프로세스를 처리하며 아래의 이슈들을 해결할 수 있어야 한다. 
    • 프로세스 동기화
    • 프로세스 교착 상태 해결

 

2. 자원 접근 및 할당

  • 운영체제는 프로세스들이 사용할 자원에 접근하고 조작해 프로세스에 필요한 자원들을 할당할 수 있어야 한다.
  • 컴퓨터의 네 가지 핵심 자원(CPU, 메모리, 보조기억장치, 입출력장치) 의 사용을 관리한다.

 

CPU

  • CPU 스케줄링
    • 운영체제는 프로세스들에 공정하게 CPU를 할당해야 한다.
    • 따라서 어떤 프로세스부터 CPU를 사용할지(우선순위), 얼마나 오래 CPU를 사용할지 결정한다.

 

 

메모리

  • 아래의 사항들을 운영체제는 관리한다.
    • 새로운 프로세스가 적재될 때 운영체제는 메모리의 어느 주소에 적재할지
    • 메모리가 부족할 경우 어떻게 해결할지
    • 메모리 공간이 남았는데도 프로세스를 적재하지 못하는 경우

 

 

입출력장치

  • 입출력장치의 작업을 수행한다.
    • 인터럽트 서비스 루틴을 제공함으로써 하드웨어 인터럽트를 처리한다.

 

3. 파일 시스템 관리

  • 운영체제는 보조기억장치의 데이터를 파일과 디렉터리로 관리함
    • 파일 시스템(file system): 여러 파일을 묶어서 디렉터리(폴더)로 관리할 수 있게 하는 서비스

 

 

 


 

가상 머신과 모드

 

현대 CPU는 가상화를 지원하기 위해 두 가지 모드 이상이 존재한다.

 

 

가상 머신(virtual machine)

  • 소프트웨어적으로 만들어낸 가상 컴퓨터
  • 가상 머신에는 새로운 운영체제와 응용 프로그램을 실행할 수 있다.

 

 

기존 모드

  • 한편 컴퓨터에 가상머신을 실행한다는건, 가상 머신도 응용프로그램으로 실행하는거다.
    • 즉, 기존 설명대로라면 응용 프로그램이기 때문에 사용자 모드이다.
    • 가상 머신 상에 설치된 새로운 운영체제도 사용자 모드로 동작할 것이다.
    • 이는 가상 머신에 설치된 운영체제가 가상 머신 속 응용프로그램에 운영체제 서비스를 온전히 제공하기 어렵게 된다.

 

하이퍼바이저 모드

  • 커널 모드와 사용자 모드 이외에 가상 머신을 위한 모드
  • 가상 머신 상의 응용 프로그램들은 가상 머신의 운영체제를 통해 자원을 요청함
  • 가상 머신의 운영체제는 하이퍼바이저 모드를 통해 운영체제 서비스를 제공함

 


 

시스템 호출의 종류

 

시스템 호출

  • 시스템 호출은 운영체제 서비스를 제공받기 위한 방법
  • 응용 프로그램이 자원 접근을 가능하게 한다.
  • 운영체제는 커널 모드로써 프로그램 대신 자원에 접근한다.
  • 개발자가 작성하는 프로그램이 언어들은 내부적으로 시스템 호출을 통해 실행된다.
  • 운영체제가 제공하는 서비스가 많기 때문에 시스템 호출의 종류는 매우 다양하다.

 

유닉스, 리눅스 등 운영체제(POSIX 운영체제)의 대표적 시스템 호출 종류

종류 시스템 호출 설명
프로세스 관리 fork() 새 지식 프로세스 생성
  execve() 프로세스 실행
  exit() 프로세스 종료
  waitpid() 자식 프로세스 종료 시까지 대기
파일 관리 open() 파일 열기
  close() 파일 닫기
  read() 파일 읽기
  write() 파일 쓰기
  stat() 파일 정보 획득
디렉터리 관리 chdir() 작업 디렉터리 변경
  mkdir() 디렉터리 생성
  rmdir() 비어있는 디렉터리 삭제
파일 시스템 관리 mount() 파일 시스템 마운트
  unmount() 파일 시스템 마운트 해제

 

 


참고

 

주요 Point

  • 파일읽기/쓰기 등 → 커널모드
  • 시스템 호출 종류가 있으며 이 시스템 호출 종류를 사용하면 사용자 모드에서 커널 모드로 넘어간다.

 

 

 

 

 

반응형