CS

운영체제 OS

index.ys 2023. 7. 15. 20:35

운영체제란,

  • 시스템 자원: 프로그램 실행에 필요한 요소들 ex) cpu, 메모리 ,보조기억 장치
  • 운영체제는 프로그램 실행에 필요한 자원들을 할당하고 프로그램이 실행되도록 돕는 특별한 프로그램
  • 특정 응용프로그램이 cpu를 오랫동안 점유하지 않게하고 여러 응용프로그램이 cpu를 공정하게 할당할 수 있도록 함
  • 동시에 두 개이상의 응용프로그램이 자원을 사용하지 못하도록 방지함
  • 운영체제는 하드웨어와 응용프로그램 사이에서 응용프로그램에 필요한 자원을 할당하고, 응용프로그램이 순서대로 올바르게 실행되도록 관리함
  • 특정 자원을 관리하는 영역으로 나뉘어 관리함 cpu => 커널 영역 cpu관리 영역

커널영역

  • 운영체제는 매우 특별한 프로그램이기 때문에 메모리 영역 중 커널영역이라는 특별한 영역에 적재되어 실행
  • 사용자 영역에 적재된 응용프로그램 들에 자원을 할당하고 올바르게 실행되도록 도움
  • 운영체제는 실행할 프로그램을 메모리에 적재하고, 더이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리하는 역할

사용자영역

  • 사용자가 이용하는 응용프로그램들이 메모리에 적재되어 실행되는 영역 ex) 구글 크롬, 메모장, 게임 ,포토샵 등
  • 메모리에는 여러개의 응용프로그래들이 적재되어 실행

운영체제의 큰 그림

커널

  • 현존하는 프로그램 중 가장 큐모가 큰 프로그램 ex)리눅스의 소스크는 천만줄이 넘음.
  • 운영체제의 핵심 서비스를 담당하는 부분 => 자원에 접근하고 조작하는
  • 운영체제가 설치된 모든 기기에는 커널이 존재

이중 모드

  • 응용 프로그램이 자원에 직접 접근하는 것을 방지하여 자원을 보호함 => 메모장에서 변경한 파일을 워드 프로세서에서 똑같이 변경하면 자원이 손상됨
  • 운영체제는 응용프로그램이 자원에 직접적으로 접근하지 못하도록 방지하고 중개자 역할을 수행함
  • cpu가 명령어를 실행하는 모드는 사용자 모드와 커널모드로 구분하는 방식

사용자 모드

  • 운영체제 서비스를 제공받을 수 없는 실행모드, 커널 영역의 코드를 실행할 수 없는 모드
  • 일반적인 응용프로그램은 사용자 모드로 실행됨
  • 사용자 모드로 실행되는 일반적인 응용프로그램은 자원에 접근불가

커널 모드

  • 운영체제 서비스를 제공받을 수 있는 실행모드
  • 운영체제는 커널모드로 실행되기 때문에 자원에 접근할 수 있음

시스템 호출

  • 사용자 모드로 실행되는 응용프로그램들이 자원에 접근하는 운영체제 서비스를 제공받기위해 운영체제에 요청을 보내 커널모드로 전환되어야함
  • 운영체제 서비스를 제공받기 위한 요청 => 시스템 호출
  • 소프트웨어적인 인터럽트
  • 시스템 호출 발생 => cpu는 지금까지의 작업을 레지스터에 저장 => 커널영역 내에 시스템 호출을 수행하는 코드 (인터럽트 서비스 루틴)를 실행 => 기존에 수행하던 응용 프로그램을 이어서 실행
  • 시스템 호출을 아주 빈번하게 발생함, 사용자 모드와 커널 모드를 번갈아 가면서 실행됨

운영체제 핵심 서비스

프로세스 관리

  • cpu는 한번에 하나의 프로세스만 실행
  • 여러 프로세스를 일목요연하게 관리하고 실행

자원 접근 및 할당

  • 운영체제가 자원을 어떻게 관리

CPU

  • 메모리에는 여러 프로세스가 적재됨, CPU는 한번에 하나의 프로세스만 실행가능
  • 프로세스가 얼마나 CPU를 점유할 지 결정 => CPU스케줄링

메모리

  • 운영체제는 프로세스가 실행될때 마다 메모리의 어느 주소에 적재해야할지 결정함
  • 페이징, 스와핑

입출력 장치

  • 인터럽트 서비스 루틴은 운영체제가 제공하는 기능으로 커널영역에 있음.
  • 인터럽트 서비스 루틴을 제공함으로써 입출력 작업을 수행함

파일 시스템 관리

  • 파일 CRUD, 운영체제가 보조기억장치 속 데이터를 파일과 디렉터리로 관리