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

jihyelee·2023년 8월 10일
0

achitecture-os

목록 보기
9/15

강의 링크

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

  • 모든 프로그램은 실행을 위해 자원을 필요로 함
  • 자원, 시스템 자원
    • 프로그램 실행에 있어 마땅히 필요한 요소
    • 컴퓨터의 4가지 핵심 부품 포함

운영체제

  • 실행할 프로그램에 필요한 자원을 할당
    • e.g. 프로그램을 메모리에 적재 혹은 삭제 (메모리 관리)
    • e.g. 프로그램의 CPU 사용 순서 및 시간 할당 (CPU 관리)
    • e.g. (입출력장치 관리)
  • 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
    • 사용자를 위한 프로그램이 아니라 프로그램을 위한 프로그램
  • 커널 영역에 적재되는 프로그램
    • 참고. 응용 프로그램(application software)이란 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램

  • 하드웨어와 응용 프로그램 사이의 다리 역할
  • 운영체제 덕분에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요가 없음
  • 프로그램을 만드는 개발자는 운영체제를 알아야 함
    • 오류 메세지에 대해 깊이 이해할 수 있음 (문제 해결 능력 증가)

운영체제의 큰 그림

커널

  • 운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나
  • 다양한 종류의 운영체제 또한 존재
    • e.g. Windows, android, macOS, iOS, linux, ...
  • 운영체제가 제공하는 기능은 다양하나 가장 핵심적인 서비스는 존재
    • e.g. 자원에 접근하고 조작, 프로그램을 올바르고 안전하게 실행, ...
  • 운영체제의 핵심 서비스를 담당하는 부분 = 커널
    • 참고. 운영체제에는 속하는데 커널에는 속하지 않는 기능 중 하나: 유저 인터페이스(UI)

시스템 콜(= 시스템 호출)이중 모드

  • 사용자가 실행하는 프로그램은 자원에 직접 접근할 수 없음 (위험)
  • 운영체제는 응용 프로그램들이 자원에 접근하려 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호
    • 이러한 문지기 역할은 이중 모드로 구현

이중 모드

  • CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
  • 사용자 모드
    • 운영체제 서비스를 제공받을 수 없는 실행 모드
    • 커널 영역의 코드를 실행할 수 없는 실행 모드
    • 자원 접근 불가
  • 커널 모드
    • 운영체제 서비스를 제공받을 수 있는 실행 모드
    • 자원 접근을 비롯한 모든 명령어 실행 가능
  • 플래그 레지스터의 슈퍼바이저 플래그 사용 (1 = 커널 모드, 0 = 사용자 모드)

시스템 호출

  • 커널 모드로 전환하여 실행하기 위해 응용 프로그램이 운영체제를 호출
  • 일종의 소프트웨어 인터럽트
    • 시스템 호출이 처리되는 방식은 하드웨어 인터럽트 처리 방식과 유사
      업로드중..
    • 1) 시스템 호출 -> 2) 운영체제 코드 실행 -> 3) 시스템 호출 복귀

운영체제의 서비스 종류

프로세스 관리

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

자원 접근 및 할당

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

파일 시스템 관리

  • 관련된 정보를 파일이라는 단위로 저장 장치에 보관
  • 파일들을 묶어 폴더(디렉터리) 단위로 저장 장치에 보관
profile
Graduate student at Seoul National University, majoring in Artificial Intelligence (NLP). Currently AI Researcher at LG CNS AI Lab

1개의 댓글

comment-user-thumbnail
2023년 8월 10일

개발자로서 배울 점이 많은 글이었습니다. 감사합니다.

답글 달기