728x90
반응형

Chapter 09 운영체제 시작하기

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

운영체제/ 문제 해결

운영체제(Operating System)

프로그램 실행에 필요한 요소: 시스템 자원 = 자원

ex. CPU, 메모리, 보조기억장치, 입출력장치 등 컴퓨터 부품

=> 모든 프로그램은 실행되기 위해 반드시 자원 필요

 

운영체제

  • 실행할 프로그램에 필요한 자원 할당, 프로그램 올바르게 실행되도록 돕는 프로그램(: 메모리에 적재되어야 함)
  • 컴퓨터가 부팅될 때 메모리 내 커널 영역(kernel space)에 따로 적재
  • 지속적으로 메모리 자원 관리: 실행할 프로그램 -> 메모리에 적재/ 실행되지 X 프로그램 -> 메모리에서 삭제
  • 공정하게 여러 프로그램에 CPU 자원 할당
  • 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 접근하는 것 방지 -> 자원 보호

사용자 영역(user space): 커널 영역을 제외한 나머지 영역, 사용자가 이용하는 *응용 프로그램이 적재되는 영역

=> 운영체제) 커널 영역에 적재 -> 사용자 영역에 적재된 프로그램들에 자원 할당, 올바르게 실행되도록 도움

 

*응용 프로그램(application software)

  • 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램
  • ex. 워드 프로세서, 인터넷 브라우저, 메모장, 게임 등
운영체제- 정부
응용 프로그램에 자원 효율적으로 배분 - 국내 자원(땅, 인력, 돈 등) 효율적으로 배분
실행할 프로그램들이 지켜야 할 규칙 만들어 컴퓨터 시스템 관리 - 국민들이 규칙 만들어 나라 전체 관리
CPU 관리, 프로세스 관리, 파일시스템 관리, 메모리 관리... - 기획재정부, 과학기술정보통신부, 외교부...

운영체제가 없다면 하드웨어 조작하는 코드 -> 개발자가 직접 작성

ex. 프로그램을 메모리에 적재하는 코드, CPU가 1과 2를 더하게 하는 코드, 모니터에 계산 결과 출력하는 코드 


2. 운영체제의 큰 그림

커널/ 이중 모드/ 시스템 호출/ 운영체제 서비스

커널(kernel)

  • 운영체제의 핵심 서비스를 담당하는 부분
  • ex. 사람의 심장, 자동차의 엔진

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

  • 사용자가 컴퓨터와 상호작용할 수 있는 통로
    • 그래픽 유저 인터페이스(GUI; Graphical User Interface): 그래픽 기반
    • 커맨드 라인 인터페이스(CLI; Command Line Interface): 명령어 기반
  • 운영체제가 제공하는 서비스 O But, 커널에 포함 X
  • ex. 윈도우 바탕화면 

이중 모드와 시스템 호출

운영체제에 도움을 요청한다 = 운영체제 코드를 실행하려고 한다

응용 프로그램의 요청 -> 운영체제) 응용 프로그램 대신 자원에 접근하여 요청한 작업 수행

ex. 응용 프로그램이 하드 디스크에 접근하여 데이터 저장-> 운영체제에 도움 요청
-> 운영체제) 커널 영역 내의 하드 디스크에 데이터를 저장하는 코드 실행(응용 프로그램 작업 대신 수행)

 

=> 운영체제 문지기 역할 

이중 모드(dual mode): CPU가 명령어를 실행하는 모드 구분 

  • 사용자 모드(user mode)
    • 운영체제 서비스 제공받을 수 X 실행 모드
    • 커널 영역의 코드 실행할 수 X 모드
    • CPU) 사용자 모드로 명령어 실행 -> 하드웨어 자원에 접근하는 명령어(ex. 입출력 명령어) 실행 X
      -> 일반적인 응용 프로그램은 자원에 접근 X
  • 커널 모드(kernel mode)
    • 운영체제 서비스 제공받을 수 O 실행 모드
    • 커널 영역의 코드 실행할 수 O 모드
    • CPU) 커널 모드로 명령어 실행 -> 자원에 접근하는 명령어 비롯한 모든 명령어 실행 O
      -> 운영체제는 커널 모드로 실행 => 자원에 접근 O

사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스 제공받으려면

운영체제에 요청 보내 커널 모드로 전환되어야 함

 

시스템 호출(system call) = 시스템 콜

  • 운영체제 서비스를 제공받기 위한 요청
  • 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 방법
  • 소프트웨어 인터럽트
    • 입출력장치에 의해, 특정 명령어에 의해 발생

CPU가 시스템 호출을 처리하는 순서 ~= 인터럽트 처리 순서(04장)

시스템 호출 발생시키는 명령어 실행

-> CPU) 작업 백업, 커널 영역 내 시스템 호출 수행하는 코드(인터럽트 서비스 루틴) 실행

-> 기존에 실행하던 응용 프로그램으로 복귀하여 실행 계속함

시스템 호출의 작동 예

응용 프로그램 -> 하드 디스크에 데이터 저장
=> 응용 프로그램이 하드 디스크에 접근해야 함
But, 사용자 모드로 실행되는 동안 자원(하드 디스크)에 접근 X 
-> 커널 모드로 전환

1. 하드 디스크에 데이터 저장하는 시스템 호출 발생 -> 커널 모드로 전환
2. 운영체제 내 '하드 디스크에 데이터를 저장하는 코드' 실행 -> 하드 디스크에 접근
3. 사용자 모드로 복귀해 실행 계속함

운영체제의 핵심 서비스

  • 프로세스 관리
    • 프로세스(process): 실행 중인 프로그램
    • 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있음
      -> 프로세스들 번갈아 가며 실행
    • 각 프로세스 상태, 사용하고자 하는 자원 다름
    • 여러 프로세스 동시에 실행되는 환경 -> (필수) 프로세스 동기화, 교착 상태 해결
  • 자원 접근 및  할당
    • CPU
      • 메모리 - 여러 프로세스 저장/ CPU - 한 번에 하나의 프로세스만 실행
        -> 하나의 프로세스가 CPU 이용 중 -> 다른 프로세스 기다려야 함
      • CPU 스케줄링: 운영체제) 프로세스에 공정하게 CPU 할당 -> 어떤 프로세스, 얼마나 오래 이용할지 결정
    • 메모리
      • 적재된 프로세스 크기, 주소 다름(같은 프로세스여도 실행할 때마다 달라질 수 있음)
        -> 새로운 프로세스 적재 시 어느 주소에 적재할지 결정
    • 입출력장치
      • 인터럽트 서비스 루틴: 인터럽트 처리하는 프로그램 -> 입출력작업 수행
      • 하드웨어 인터럽트(입출력 장치가 발생)
        • 입출력장치) 하드웨어 인터럽트 요청 신호 -> CPU
          CPU) 하던 일 백업, 커널 영역에 있는 인터럽트 서비스 루틴 실행
  • 파일 시스템 관리
    • 파일 열고, 생성하고, 삭제 -> 묶어 디렉터리(폴더)로 관리

출처

 

[한빛미디어] 혼자 공부하는 컴퓨터 구조+운영체제

좋은 개발자는 컴퓨터를 분석의 대상으로 바라볼 뿐, 두려워하지 않는다!‘전공서가 너무 어려워서 쉽게 배우고 싶을 때’, ‘개발자가 되고 싶은데 뭐부터 봐야 하는지 모를 때’ ‘기술 면접

hongong.hanbit.co.kr

 

728x90
반응형
김앩옹