Skip to content

Files

Latest commit

Mar 30, 2023
d716082 · Mar 30, 2023

History

History
77 lines (74 loc) · 8.8 KB

chap01.md

File metadata and controls

77 lines (74 loc) · 8.8 KB

운영체제 CHAP 01

  • 시험: 주관(12문제), 객관(4지선다 or 6개 중 1,23개 고르는 문제) 섞어서

OS(Operating System)란

  • 운영체제(Operating System)
    • 컴퓨터의 여러 응용 프로그램을 설치되게 해주고, 여러 가지 장치(하드웨어)를 효율적으로 작동하도록 하며, 사용자가 컴퓨터를 손쉽게 이용할 수 있도록 해주는 프로그램의 집단
    • **사용자 인터페이스(User Interface)**와 **자원 관리(Resource Management)**를 위한 프로그램의 집합
  • 시스템 소프트웨어 = 운영체제 + 시스템 프로그램 집단
    • 시스템 프로그램: 컴퓨터 하드웨어에 의존적이며 그 시스템을 정상적으로 작동시키기 위해 필요한 프로그램
    • 컴퓨터 기종에 따라 다름
    • ex> 윈도 등
  • 응용 소프트웨어 = 응용 프로그램 집단
    • 기종에 관계없이 작성될 수 있음
    • ex> 게임 프로그램 등
  • 다수 사용자(Multituser)컴퓨터 시스템: 다수의 사용자가 한꺼번에 컴퓨터와 접속하여 각자 동시에 다양한 일을 할 수 있는 환경 -> 에서 사용될 운영체제에 대해 이야기할거임

운영체제의 역사

  • 읽어보기만 함. 중요한 내용들 몇개만 정리할거임
  • 일괄처리 시스템(Single-stream Batch Processing Systems)
    • IBM 701에 와야 운영체제의 1세대라 할 수 있는 기능들이 장착됨
    • 일괄처리: 다수의 프로그램을 읽어 저장해 놓되, 한 번에 한 개씩의 프로그램을 실행시켜주는 방식
    • 처리해야할 작업(Job)들을 한꺼번에 여러개 준비시켜 놓고(Single-stream) 다음 작업의 처리를 자연스럽게 연결되도록 함 -> Job-to-job의 transition을 smooth하게 함
    • Batch
      • 초창기 Batch: 작업이 차례대로 한 개씩 처리됨-> 한 개의 작업이 시작되면 그 일이 완전히 끝날 때까지 다른 작업은 기다려야함
      • 이후 Batch -> 일괄처리를 하되 다중 프로그래밍을 하는 Batch - 작업 끝날 때까지 사용자의 중간 개입이 허용되지 않음
  • 다중 프로그래밍 시스템
    • 일괄처리의 문제: CPU를 최대한 가동시키는 것이 그 시스템의 능력을 최대한 발휘하는 것이고, 이것이 사용자들의 작업을 빨리 처리해줄 수 있는 것인데 한 작업이 완료될때까지 CPU를 다른 작업에 넘기지 않는다면 이외의 기간에 CPU가 낭비됨 (Ex. 입출력(I/O))
    • 내장 프로그램 개념: 어떠한 작업도 실행되기 위해서는 **주기억장치(Main Memory)**에 있어야함.
    • 다중 프로그래밍 시스템: 다수(Multi) 개의 작업(Program)이 같이 주기억 장치에 있도록 한 방식
    • 다중처리 시스템: 여러개의 처리장치(Processor, CPU와 같은 기능을 하는것)를 장착하여 동시에 여러 작업을 병렬로 실행하여 처리 속도를 최대한 높이는 방식
    • 다중처리를 위해 다중 프로그래밍은 필요될 수 밖에 없음!
  • 시분할 시스템(Time Sharing)
    • CPU가 처리해 줄 수 있는 시간을 작업 수에 맞춰 분할하여 각자에게 일정량만큼 씩 분배하여 번갈아 가며 처리 -> 실제로는 많은 작업이 있음에도 각 작업은 CPU가 자신의 일을 계속해서 처리해주고 있다는 생각을 하게됨
    • 시분할 시스템이 효과적으로 운영되기 위해 다중 프로그래밍 시스템이 먼저 필요됨. (다음으로 넘어갈 때 걸릴 시간을 가장 줄일 수 있는 방법..)
  • 대화식 시스템(Interactive)
    • 시분할 시스템은 사용자에게 바로바로 응답해줄 수 있음 -> 응답을 즉시 보기 위해서는 모니터 필요, 계속해서 다음 일 의뢰 위해 키보드, 마우스 등의 입력장치 필요 -> 시스템과 사용자가 모니터와 입력 장치를 통해 마치 대화하듯이 일을 처리해 나가는 방식
  • 마이크로 프로세서(Micro-processor):
    • 연산장치, 제어장치 그리고 여기에 필요한 레지스터들을 하나의 칩에 집적시켜 넣어놓은 것
    • 컴퓨터의 크기와 가격을 획기적으로 줄임
    • 개인용 컴퓨터 산업의 출발, 오늘날 정보화 시대의 토대가 됨

OS

OS 구성

  • 사용자 인터페이스(쉘)+ 자원들의 관리[장치관리+파일관리+메모리관리+처리기관리]
    • 쉘(Shell): 사용자 인터페이스. 사용자나 응용 프로그램이 운영체제와의 정보 교환이나 운영체제로의 요청 창구로 필요한 요소
    • 장치들의 관리: 시스템에 있는 주변 장치(키보드,모니터,프린터, 하드디스크 등)를 제어
    • 파일 관리: 사용자 or 프로그래머로 하여 파일을 만들고,지우고, 수정하고, 이름을 부여. 디렉터리(폴더) 등을 관리하는 일
    • 메모리 관리: 주기억 장치의 관리 담당.
      • 주기억 장치의 일정 부분을 할당하는 일
      • 주기억 장치 안에 있는 프로그램들의 경계를 설정하여 서로 침범하지 못하게 하는 등의 일
    • 처리기 관리: 컴퓨터의 처리기(CPU)의 처리능력을 각 작업에 효과적으로 배분토록 하는 일 => 이러한 관리들은 밀접한 연관을 가지고 실행됨 (동떨어져있지 x)

OS의 위치

  • 커널(Kernel)+유틸리티 프로그램(Utility Program)
    • 커널
      • 운영체제의 각종 기능들 중 사용자와 실행 프로그램을 위해 매우 빈번하게 사용되는 부분
      • 컴퓨터가 처음 부팅될 때에 주기억 장치에 적재되어 시스템의 운영이 종료(shutdown)될 때까지 계속해서 주기억 장치에 남아있게 되는 부분
        • 주기억 장치에 상주시키는 이유? : 빈번히, 빨리 실행되어야할 프로그램을 디스크에 두었을 경우 이들이 실행될 때마다 주기억 장치로 불러들여야 함 -> 디스크와 주기억 장치 사이의 입출력에 해당하는 일 -> 많은 시간을 요구하게 되어 시스템 성능 저하
      • 운영체제의 핵심 : 핵, 관리자, 메모리 상주(Memory Resident) 프로그램 이라고도 불림.
    • 유틸리티
      • 왜 유틸리티라는 것을 따로 뗴어냈을까? : 주기억 장치 용량 때문
        • 한정된 용량의 주기억 장치에 운영체제가 거의 대부분을 차지할 경우 사용자 프로그램들이 올라올 공간이 매우 줄어들게 됨 -> 많은 사용자 프로그램들이 효과적으로 실행되지 못함
      • 운영체제 프로그램 중 자주 사용되지 않는 부분은 디스크에 두고 필요할 때 잠시 주기억 장치로 넣어 실행시킨 후 다시 디스크로 보냄 -> 사용자 프로그램을 위한 주기억 장치의 공간을 확보
      • 사용자 인터페이스의 대부분이 유틸리티에 속함
    • 커널과 유틸리티를 구분짓는 명확한 잣대는 없음! -> 설계자의 기준에 따라 달라질 수 있음
  • 펌웨어(Firmware): 생긴건 하드웨어고 내부적으로 프로그램인 형태
    • 커널 중에서도 좀 더 빠른 실행이 요구, 높은 수준의 보호가 필요한 프로그램들은 마이크로 프로그래밍을 하여 **롬(ROM)**이나 **PLA(Programmable Logic Array)**와 같은 칩의 형태로 만들어놓기도 함

윈도에서는?

  • 듀얼 모드(Dual mode): 유저 모드(User Mode)+ 커널 모드(Kernel Mode)
    • 사용자 프로그램 간에, 사용자와 운영체제 프로그램 간에 설정된 영역은 보호되어야함.
    • 시스템에 있는 여러 장치들을 사용자가 마음대로 작동시켜서도 안되고, 시스템에서 설정되어 있는 여러가지 데이터들을 바꿔서도 안됨 => 이런 권한은 커널 모드로 실행되는 프로그램들만이 가지게 함. (운영체제가 담당해도록 해줌.) (응용 프로그램이나 사용자 프로그램은 이런 권한이 없는 유저 모드에서 실행되도록 함.)
    • 유저 모드라고 해서 운영체제가 아니라는 의미는 아님! : 이 부분에 있는 프로그램들이 유틸리티에 속함, 실행될 때의 모드가 유저 모드
  • 시스템 호출(System Call
    • 사용자 프로그램에서 발생되는 읽기, 쓰기와 같은 디스크나 메모리를 접근(Access)(커널 프로그램밖에 할 수 없는 종류의 일)해야할 때 필요
    • 유저 모드로 실행 중 커널 모드에서 해야할 일이 생기면 시스템 호출을 함 -> 그 일을 해줄 운영체제 프로그램이 커널 모드에서 실행된 다음 다시 사용자 프로그램으로 복귀