운영체제 이해하기


운영체제(Operation System)의 개론 공부를 하고 작성한 글입니다

  • PC를 구입하면 Windows XP, Linux, MS-DOS, Mac OSX 등등의 운영 체제(Operating System)가 설치되어 있음
  • 운영체제가 없는 컴퓨터는 어떤 상황일까?
    • 컴퓨터는 프로세서와 메모리로 구성되어 있음
    • 메모리에 임의의 값이 들어가있어 process가 아무것도 할 수 없음. 야생마!
    • 프로그램을 실행하려면?
      • 하드디스크 안에 실행 파일이 존재 => 메모리에 올려야 함 => 올리는 역할을 OS가 함. OS가 없는 컴퓨터라면 올릴 수 없음
    • 여러 개의 프로그램을 동시에 실행시키려면?
      • 프로세스는 1개인데 동시에 여러개를 실행하는 것도 OS가 해줌
    • 프린터에 인쇄 명령을 내리려면?
    • 하드 디스크에 저장하려면?
  • 운영체제
    • 컴퓨터 하드웨어를 잘 관리해 : 프로세서, 메모리, 디스크, 키보드, 마우스, …
    • 성능을 높이고 : Performance
    • 사용자에게 편의성 제공 : Convenience
    • 컴퓨터 하드웨어를 관리하는 프로그램
      • Control program for computer
  • 부팅(Booting)
    • 컴퓨터 구조
      • 프로세서, 메모리(ROM, RAM), 하드디스크
      • POST(Power-On Self Test) : 전기를 키면 환경 설정이 잘 되어 있는지 Test. ROM에 있음
      • 부트로더(Boot Loader) : 하드디스크에 있는 OS 정보를 찾아 메인 메모리의 램 영역으로 올림. 이 작업을 부팅이라 함
      • OS는 전기를 끄면 사라짐
  • 운영체제
    • 관리(Management) 프로그램
    • 프로세서, 메모리, 디스크, 입출력장치 드라이브
    • 메모리에 Resident(상주)
    • 커널(kernel) vs 명령 해석기(shell, command interpreter)
    • 커널 : 하드웨어를 제어하고 관리하는 부분
    • 쉘 : OS의 껍질. 명령어를 실행하는 부분
  • 운영체제는 정부와 비슷
    • 자원 관리자 (resource manager)
    • 자원 할당자 (resource allocator)
    • 주어진 자원을 어떻게 잘 활용할까? (국토, 인력, 예산)
    • 정부가 직접 일하진 않고 민간 기업이 일함
    • 정부 부서가 존재 : 행정자치부, 교육부, 국방부 …
    • 운영 체제 부서 : 프로세스 관리, 메모리 관리, 파일 관리, 입출력장치 관리 …

운영체제 역사


  • 컴퓨터의 역사 : 1940년대 말에 만들어짐
    • 하드웨어 발전 vs 운영체제 기술 발전
    • Batch Processing : 일괄 처리, 묶어서 처리. resident monitor. 최초의 OS
    • Multiprogramming system : 다중프로그래밍
      • 40년대, 50년대 컴퓨터는 매우 비싼 자원
      • 빠른 CPU(계산), 느린 IO => 메모리에 여러 개의 job
      • CPU scheduling, 메모리 관리, 보호
    • Time Sharing system : 시공유 시스템
      • 강제 절환, interactive system (대화형)
      • 빠른 스위칭
      • 기술발전: 가상 메모리, 프로세스간 통신, 동기화
      • 하드디스크를 메모리처럼 사용하는 기술
      • 동시에 여러가지 일을 진행, 요즘 나오는 OS 대부분은 이 시스템
  • 컴퓨터 규모별 분류
    • Supercomputer > Mainframe > Mini > Micro
    • Supercomputer > Server > Workstation > PC > Handheld > Embedded
  • 고성능컴퓨터의 OS 기술이 Handheld/Embedded 까지
    • Batch processing
    • Multiprogramming
    • Timesharing

고등 운영체제


  • 1) 다중 프로세서 시스템 (Multiprocessor system)
    • 메모리는 1개인데 CPU(프로세스)가 여러 개
    • 병렬 시스템 (parallel system)
    • 강결합 시스템 (tightly-coupled system) : 하나의 메모리에 CPU가 결합
    • 3가지 장점: performance, cost, reliability
    • ☞ 다중 프로세서 운영체제 (Multiprocessor OS)
  • 2) 분산 시스템 (Distributed system)
    • CPU-Memory 쌍이 LAN으로 구성
    • 하둡
    • 다중 컴퓨터 시스템 (multi-computer system)
    • 3가지 장점: performance, cost, reliability
    • 소결합 시스템 (loosely-coupled system)
    • ☞ 분산 운영체제 (Distributed OS)
  • 3) 실시간 시스템 (Real-time system)
    • 시간 제약: Deadline
    • 공장 자동화 (FA), 군사, 항공, 우주
    • ☞ 실시간 운영체제 (Real-time OS = RTOS)

인터럽트 기반 시스템


  • Interrupt-Based System
  • 현대 운영체제는 인터럽트 기반 시스템!
  • 부팅시
    • ROM에 있는 부트로더 실행
    • OS 정보를 메인 메모리로 가져옴
  • 부팅이 끝나면?
    • 운영체제는 메모리에 상주 (resident)
    • 사건(event)을 기다리며 대기: 키보드, 마우스, …
  • 하드웨어 인터럽트 (Hardware interrupt)
    • 인터럽트 결과 운영체제 내의 특정 코드 (ISR) 실행
    • Interrupt Service Routine 종료 후 다시 대기
  • 소프트웨어 인터럽트 (Software interrupt)
    • 사용자 프로그램이 실행되면서 소프트웨어 인터럽트 (운영체제 서비스 이용 위해)
    • 인터럽트 결과 운영체제 내의 특정 코드 실행 (ISR)
    • ISR 종료 후 다시 사용자 프로그램으로
  • 인터럽트 기반 운영체제
    • 운영체제는 평소엔 대기 상태를 유지
    • 하드웨어 인터럽트에 의해 운영체제 코드 (ISR) 실행
    • 소프트웨어 인터럽트에 의해 운영체제 코드 실행
    • 내부 인터럽트(Interrnal interrupt)에 의해 운영체제 코드 실행 : 코드에서 0으로 나누는 것이 있으면? 계산할 수 없으니 강제 종료시켜야 함. 이런 경우 내부 인터럽트
    • ISR 종료되면 원래의 대기상태 또는 사용자 프로그램으로 복귀

이중모드


  • 한 컴퓨터를 여러 사람이 동시에 사용하는 환경
    • 또는 한 사람이 여러 개의 프로그램을 동시에 사용
    • 한 사람의 고의/실수 프로그램이 전체 영향
      • STOP, HALT, RESET 등
      • 이런 명령어들은 관리자만 내릴 수 있도록 해야겠다 => 이중 모드
  • 사용자 프로그램은 STOP 등 치명적 명령 사용 불가하게!
    • 사용자 (user) 모드 vs 관리자 (supervisor) 모드
    • 이중 모드 (dual mode)
    • 관리자 모드 = 시스템 모드 = 모니터 모드 = 특권 모드
    • Supervisor, system, monitor, priviliged mode
  • 특권 명령 (privileged instructions)
    • STOP, HALT, RESET, SET_TIMER, SET_HW, …
  • 이중 모드 (dual mode)
    • 레지스터에 모드를 나타내는 플래그(flag)
      • flag : overflow, carry, negative, zero, 모니터 비트로 모드 확인
    • 운영체제 서비스 실행될 때는 관리자 모드
    • 사용자 프로그램 실행될 때는 사용자 모드
    • 하드웨어/소프트웨어 인터럽트 발생하면 관리자 모드
    • 운영체제 서비스가 끝나면 다시 사용자 모드
    • 일반 유저가 특권 명령을 실행하려고 하면 CPU가 모니터 비트를 확인하고, 관리자 모드가 아님을 인지. 내부 인터럽트 발생해서 서비스 루틴으로 점프해 강제 종료
  • 일반적 프로그램의 실행
    • 프로그램 적재 (on memory)
    • 프로그램이 하드디스크에 있는 저장하고 싶은 경우 os에게 인터럽트 발생해 요청 (python에서 import os를 생각해보면..!)
    • user mode → (키보드, 마우스) → system mode (ISR) → user mode → (모니터, 디스크, 프린터) → system mode (ISR) → user mode → ……

하드웨어 보호

  • 입출력장치 보호 (Input/output device protection)
  • 메모리 보호 (Memory protection)
  • CPU 보호 (CPU protectiopn)

입출력장치 보호

  • 사용자의 잘못된 입출력 명령
    • 다른 사용자의 입출력, 정보 등에 방해
    • 예: 프린트 혼선, 리셋, 다른 사람의 파일 읽고 쓰기 (하드디스크)
    • IN, OUT 명령을 아무나 못 하도록
  • 해결법
    • 입출력 명령을 특권명령으로: IN, OUT
    • 입출력을 하려면 운영체제에게 요청하고 (system mode 전환),
    • 운영체제가 입출력 대행; 마친 후 다시 user mode 복귀
    • 올바른 요청이 아니면 운영체제가 거부
  • 사용자가 입출력 명령을 직접 내린 경우?
    • Privileged instruction violation : 특권 명령을 침범

메모리 보호

  • 다른 사용자 메모리 또는 운영체제 영역 메모리 접근
    • 우연히 또는 고의로
    • 다른 사용자 정보/프로그램에 대한 해킹
    • 운영체제 해킹
  • 해결법
    • 문지기(MMU)를 두어 다른 메모리 영역 침범 감시하도록 (Memory Management Unit)
    • MMU 설정은 특권명령: 운영체제만 바꿀 수 있다
  • 다른 사용자 또는 운영체제 영역 메모리 접근 시도?
    • Segment violation : 영역 침범

CPU 보호

  • 한 사용자가 실수 또는 고의로 CPU 시간 독점
    • 예: while (n = 1) …
    • 다른 사용자의 프로그램 실행 불가
  • 해결법
    • CPU Protection
    • Timer를 두어 일정 시간 경과 시 타이머 인터럽트
    • 인터럽트 → 운영체제 → 다른 프로그램으로 강제 전환

운영체제 서비스

  • 프로세스 관리
  • 주기억장치 관리
  • 파일 관리
  • 보조기억장치 관리
  • 입출력 장치 관리
  • 네트워킹
  • 보호
  • 그외

프로세스 관리

  • Process management
  • 프로세스 (process)
    • 메모리에서 실행 중인 프로그램 (program in execution)
  • 주요기능
    • 프로세스의 생성, 소멸 (creation, deletion)
    • 프로세스 활동 일시 중지, 활동 재개 (suspend, resume)
    • 프로세스간 통신 (interprocess communication: IPC)
    • 프로세스간 동기화 (synchronization)
    • 교착상태 처리 (deadlock handling)

주기억장치 관리

  • Main memory management
  • 주요기능
    • 프로세스에게 메모리 공간 할당 (allocation)
    • 메모리의 어느 부분이 어느 프로세스에게 할당되었는가 추적 및 감시
    • 프로세스 종료 시 메모리 회수 (deallocation)
    • 메모리의 효과적 사용
    • 가상 메모리: 물리적 실제 메모리보다 큰 용량 갖도록

파일 관리

  • File management
  • Track/sector 로 구성된 디스크를 파일이라는 논리적 관점으로 보게
  • 주요기능
    • 파일의 생성과 삭제 (file creation & deletion)
    • 디렉토리(directory)의 생성과 삭제 (또는 폴더 folder)
    • 기본동작지원: open, close, read, write, create, delete
    • Track/sector 와 file 간의 매핑(mapping)
    • 백업(backup)

보조기억장치 관리

  • Secondary storage management
    • 하드 디스크, 플래시 메모리 등
  • 주요기능
    • 빈 공간 관리 (free space management)
      • 블락이 점점 사용된 공간, 비어있는 공간으로 나뉘는데 이런 공간 관리
    • 저장공간 할당 (storage allocation)
    • 디스크 스케쥴링 (disk scheduling)
      • 헤드를 적게 움직이며 원하는 트랙을 읽을 수 있을까

입출력 장치 관리

  • I/O device management
  • 주요기능
    • 장치 드라이브 (Device drivers)
    • 입출력 장치의 성능향상: buffering, caching, spooling

시스템 콜


  • System calls
    • 프로세서가 운영체제 서비스를 받기 위해 호출(요청)
  • 주요 시스템 콜
    • Process: end, abort, load, execute, create, terminate, get/set attributes, wait event, signal event
    • Memory: allocate, free
    • File: create, delete, open, close, read, write, get/set attributes
    • Device: request, release, read, write, get/set attributes, attach/detache devices
    • Information: get/set time, get/set system data
    • Communication: socket, send, receive

프로세스 관리


  • CPU 자원을 효율적으로 관리
  • 프로그램 vs 프로세스 (program vs process)
    • process, task, job …
    • 프로세스 : 실행중인 프로그램(program in execution): text + data + stack, pc, sp, registers, …
      • 메모리 상에서 실행되는 작업 단위
      • 일반적으로 CPU는 한번에 하나의 프로세스만 관리할 수 있음
    • 프로그램 : 실행 되기 전의 명령어와 데이터의 묶음
    • 무덤 속 프로그램, 살아 움직이는 프로세스
  • 프로세스 상태
    • new, ready, running, waiting, terminated
      • new : 메인 메모리에 올라온 상태
      • ready : 실행할 준비가 되어있는 상태
      • running : CPU가 실제 실행한 상태
      • waiting : CPU가 다른 작업을 진행하면 기존 작업은 waiting
      • terminated : 종료
  • PCB: Process Control Block
    • Task Control Block (TCB)
    • 프로세서 제어 블록, 프로세스에 대한 모든 정보 보유
    • process state (running, ready, waiting, …), PC, registers, MMU info (base, limit), CPU time, process id, list of open files, …
    • 사람과 비유? : 정부는 내 정보를 모두 기록하고 있음. PCB와 주민등록 등본과 유사
  • 프로세스 대기열 (queue)
    • Job Queue
      • Job scheduler
      • Long-term scheduler
    • Ready Queue
      • CPU scheduler
      • Short-term scheduler
    • Device Queue
      • Device scheduler
  • Multiprogramming
    • Degree of multiprogramming
    • i/o-bound vs CPU-bound process
  • Medium-term scheduler
    • Swapping
      • 메모리에 올라와 있지만 아무 작업도 안하는 경우 디스크에 해당 메모리를 저장한 후(swap out), 사용하던 메모리를 다른 프로세서에게 분배
      • 다시 작업이 진행될 경우 다시 메모리를 가지고 옴(swap in)
      • 이런 작업들을 통칭 swapping이라고 함
    • 컴퓨터의 성능 향상을 위해 진행

용어


  • Context switching (문맥전환)
    • 프로세스가 메모리에 여러개 있어도 어느 순간엔 1개만 진행할 수 있음
    • p1->p2, p2->p3
  • Scheduler
    • 지금 프로세스가 끝나고 어떤 프로세스를 실행할 것인가를 결정
  • Dispatcher
    • 실제로 스케쥴러가 선택한 프로세스를 실행하도록 상태, 레지스터의 값을 바꿔줌
    • 어셈블리 같은 로우 레벨 코드로 짜야됨
    • 준비상태의 프로세스들 중에서 우선순위가 가장 높은 프로세스에게 CPU를 할당
  • Context switching overhead
    • 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업
    • Running 상태의 Task가 사용하던 Context를 메모리 특정 영역에 저장한 후 새로이 수행 될 Task의 Context를 TCB또는 Stack에서 CPU의 레지스터 영역으로 복사하여 새로운 Task가 수행되도록 하는 일련의 작업

Reference






© 2017. by Seongyun Byeon

Powered by zzsza