본문 바로가기
cs

[혼공운영체제] 운영체제를 알아야 하는 이유와 운영체제의 큰 그림

by 이쟝 2023. 5. 1.
인프런의 개발자를 위한 컴퓨터 공학1 : 혼자 공부하는 컴퓨터 구조 + 운영체제 강의를 듣고, 학습 및 요약

 

자원/시스템 자원

  • 프로그램 실행에 있어 마땅히 필요한 요소
  • 컴퓨터의 네 가지 핵심 부품 포함!(CPU, 주기억장치(메모리), 보조기억장치, 입출력장치)

운영체제

실행할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이며
커널 영역에 적재되는 프로그램

 

  • 프로그램이기 때문에 실행되기 위해서는 반드시 메모리에 저장되어 있어야 하는데 운영체제는 특별한 프로그램이기 때문에 커널 영역에 저장된다.
  • 응용 프로그램(application software) : 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램(워드, 메모장, 인터넷 브라우저 등..)
  • 운영체제는 메모리관리, CPU관리, 입출력장치 관리를 한다.

 

운영체제 구조

 

  • 운영체제는 하드웨어와 응용 프로그램 사이에 위치해서 연결해주는 프로그램이다. 
  • 운영체제 덕분에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요가 없다.
  • 운영체제는 사용자를 위한 프로그램이 아니고, 프로그램을 위한 프로그램이기 때문에 프로그램을 만드는 개발자는 운영체제를 알아야 한다.

운영체제의 큰 그림

  • 커널이란?
  • 시스템 콜(시스템 호출)과 이중 모드란?
  • 운영체제의 서비스 종류?
운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나이며, 종류도 다양하다.
그렇기에 운영체제가 제공하는 기능은 다양하지만 가장 핵심적인 서비스는 존재한다. 
ex) 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능

커널(kernel)

운영체제의 핵심 기능(서비스)을 담당하는 부분

운영체제(커널)

 

  • 운영체제에는 속하는데 커널에는 속하지 않는 기능 => 유저 인터페이스(UI : User Interface)
  • 사용자와 컴퓨터 간의 통로일 뿐 운영체제의 핵심 기능(커널)은 아님

이중모드와 시스템 호출

사용자가 실행하는 프로그램은 자원에 직접 접근할 수 있을까? => 자원에 직접 접근은 위험하다.(프로그램 충돌 때문)
운영체제는 응용 프로그램들이 자원에 접근하려 할 때 오직 자신을 통해서만 접근하도록 해 자원을 보호한다.

  • 응용 프로그램이 자원에 접근하려면 운영체제의 도움을 요청(=운영체제의 코드를 실행)해야 한다.
  • ex) 응용 프로그램이 하드 디스크에 접근할 때?

예시

이중모드

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

 

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

 

이중 모드

시스템 호출 

커널 모드로 전환해 실행하기 위해 호출한다. 즉 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 방법 

 

  • 일종의 소프트웨어 인터럽트
  • 시스템 호출이 처리되는 방식은 하드웨어 인터럽트 처리 방식과 유사

시스템 호출
시스템 호출

운영체제의 핵심 서비스

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

1. 프로세스 관리

  • 프로세스 == 실행 중인 프로그램
  • 수많은 프로세스들이 동시에 실행
  • 동시다발적으로 생성/실행/삭제되는 다양한 프로세스를 일목요연하게 관리
    • 프로세스와 스레드, 프로세스 동기화, 교착상태 해결

프로세스 관리

2. 자원 접근 및 할당

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

3. 파일 시스템 관리

  • 관련된 정보를 파일이라는 단위로 저장 장치에 보관
  • 파일들을 묶어 폴더(디렉터리) 단위로 저장 장치에 보관