• 운영체제란?
    - 컴퓨터 하드웨어를 관리하는 프로그램
    - 응용프로그램의 토대를 제공해주는 프로그램
    - 컴퓨터의 사용자와 컴퓨터 하드웨어 사이에 중간 매개체 역할을 해주는 프로그램
    - 자원 관리자: CPU 시간, 메모리 공간, 파일 저장 공간, 입출력 장치
    - 제어프로그램: 사용자 프로그램의 실행을 관리하고, 오류와 컴퓨터 오용을 방지

     
    Com abstract layers kor.png 



    ∴ 커널? 
    커널은 운영 체제의 핵심 부분이므로, 커널의 역할 역시 운영 체제의 핵심 역할이라 할 수 있다. 보안, 자원 관리(프로세서 관리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 디바이스 제어, 네트워크 관리)추상화 등

    ∴ 쉘? 명령어 해석기로 사용자와 운영체제 간에 인터페이스로 사용자로부터 명령을 받아 실행


  • 메인프레임 시스템
    - 일괄처리(batch processing) 시스템
     : 초창기 시스템, 운영체제는 항상 메모리에 상주
     : 처리속도를 향상하기 위해 유사한 요구를 필요로 하는 작업을 함께 모아서 일괄 처리(batch processing)
     : 기계적 입출력 장치가 전자적 장치의 속도보다 상대적으로 느려 CPU 유휴 시간 증가
     : 직접 접근(direct access)이 가능한 디스크의 도입으로 작업 스케줄링(job scheduling), 다중 프로그래밍(multiprogramming)이 가능해짐

    - 다중프로그램(multiprogramming) 시스템
     : 다중 프로그래밍이란 여러 개의 프로그램을 동시에 메모리에 적재하여 하나의 프로그램이 대기상태가 되면 그 동안 다른 프로그램을 실행하는 방식
     : 입출력과 프로그램의 실행을 병행으로 수행할 수 있어 CPU의 사용 효율 증가
     : 디스크에 있는 작업 저장소(job pool)에서 작업을 선택하여 메모리로 옮기는 것을 작업 스케줄링(Job scheduling)이라 함.
     : 실행중 인 작업이 대기 상태가 되었을 때 메모리에 있는 작업 중 하나를 선택하여 CPU에 할당하는 것은 CPU 스케줄링(CPU scheduling)이라 함.
     : 여러 프로그램이 동시에 메모리에 상주하므로 메모리 관리가 복잡

    - 시분할(time sharing) 시스템 = 멀티태스킹(multitasking) 시스템
     : 다중 프로그래밍을 제공하는 일괄처리 시스템은 CPU의 사용 효율은 높였지만 사용자와 컴퓨터간에 상호작용은 제공하지 못함.
     : 정해진 시간이 되면 무조건 다음 순서의 작업을 실행하는 방식, 교대하는 시간이 매우 짧아 프로그램이 실행되는 동안 사용자는 컴퓨터와 상호작용 가능
     : 대화식 컴퓨터 시스템(interactive computer system), 응답시간이 짧아야함
     : 시분할 시스템은 여러 사용자가 동시에 컴퓨터를 사용할 수 있게 해줌.
     : 메모리에 적재되어 실행중인 프로그램을 프로세스(process)라 한다.
     : 많은 사용자의 프로그램을 동시에 수행하기 위해서는 주기억장치의 용량으로는 부족 -> 디스크를 주기억장치의 보조 저장장치로 활용하며, 현재 가장 널리 사용되는 기법은 가상 메모리(virtual memory)

  • 다중프로세서(multiprocessor system) 시스템 = 병렬 시스템(parallel system) or 밀결합 시스템(tightly coupled system)
     : 컴퓨터 버스, 클럭, 메모리 등을 공유하는 둘 이상의 프로세서를 사용하는 시스템
     : 처리율 증가 (N개의 프로세서를 사용한다고 처리율이 N배로 증가하는건 아님)
     : 신뢰성 증가, 결함 허용(fault tolerancee)에 유리하다. 계속 수행되는 하드웨어의 수에 비례하여 서비스를 계속 제공할 수 있는 능력을 우아한 성능 저하(graceful degradation)라 한다.
     : 대칭형 다중처리(가장 많이 사용), 비대칭형 다중처리(각 프로세서 간 주/종 관계 존재)

  • 분산시스템, 집단 시스템, 실시간 시스템, 휴대용 시스템 등

  • 컴퓨터 부팅 과정

    ① 
    전원 ON

    ② 
    메인보드의 ROM-BIOS에 있는 BIOS프로그램 실행
     - 하드웨어 오류 검사 (POST: Power-On Self Test)
     - 부팅매체 탐색
     - 1차 Boot loader 로딩 [Boot loader를 0:7C00위치의 메모리(RAM)에 적재]
     : 주하드디스크(첫 번째 부팅 장치 HDD)의 첫 번째 섹터인 MBR(Master Boot Record)의 내용을 메모리(RAM)에 로딩한 후 제어권을 넘깁니다. 일반적으로 512byte에 Boot loader 코드를 모두 적재하기 힘들기 때문에 기본적으로 필요한 부분만 MBR에 저장하고, 이를 통해서 2차 Boot loader를 호출합니다.

    ③ 
    프로세서(CPU)가 Boot loader 코드 실행

    ④ 
    해당 운영체제의 2차 Boot loader 로딩 및 실행

    ⑤ Kernel 로딩

    ⑥ 프로세서(CPU)가 Kernel 실행
     - 초기화 및 시스템 설정
     - ID 1번 프로세스(초기화 프로세스) 실행

    ⑦ 하드웨어나 소프트웨어 Interrupt 발생을 기다림

    ⑧ OS 동작

  • OS - 인터럽트 기반
    - H/W interrupts : external event
     : CPU에 특정 신호를 보내어 인터럽트의 발생을 알림

    - S/W interrupts - trap (or exception)
     : internal event
     : 시스템 호출(system call)이라는 특정 연산을 실행하여 일부로 발생시키거나 오류(0 나누기, 부적합한 주기억장치 접근)때문에 자발적으로 발생

    ■ Trap vs Interrupt
     : CPU관점에서 internal event인지 external event인지

    - 기본적인 인터럽트 동작원리
     ① 현재 작업을 멈추고, 현재 상태를 보관
     ② 인터럽트의 종류 분석
     ③ 특정 인터럽트 수행(인터럽트 벡터 활용)
     ④ 보관된 상태를 원상복귀하고 멈춘 작업을 재개

    - Polling vs Vectored interrupt system vs DMA
     : 폴링방식은 정해진 시간 또는 순번에 상태를 확인해서 상태 변화가 있는지 없는지를 체크 하는 방식
     : 인터럽트 벡터 시스템은 인터럽트가 발생했을 때, 현재 작업을 멈추고 그 인터럽트를 처리할 수 있는 서비스 루틴들의 주소를 가지고 있는 공간(인터럽트 벡터)을 찾아서 해당 인터럽트를 수행한다.

    - I/O interrupt
     : I/O를 시작하기 위해 CPU는 장치 제어기 내에 있는 레지스터에 적절한 데이터를 적재
     : 제어기는 이것을 검사하여 어떤 행동을 취할지 결정
     : 입출력의 수행이 끝나면 보통 인터럽트를 통해 CPU에게 통보
     : 동기식 입출력, 비동기식 입출력
     : 병행 처리를 위해 장치 상태 테이블을 유지
     
    인터럽트 기반의 I/O 작업은 대량의 데이터 이동에 큰 오버헤드 발생

     ■ DMA (Direct Memory Access)
     : CPU의 관여없이 직접 주기억장치로 이동하며, 인터럽트는 바이트 단위가 아닌 블록 단위로 발생



  • 주기억장치 메모리 할당 방식


  • 하드웨어 보호
    : 다중 프로그래밍 환경에서는 하나의 프로세스의 오류가 다른 프로세스에게도 영향
    : 따라서 운영체제는 이런 오류가 다른 프로세스에 영향을 주지 않도록 해야함
    : 오류 발생 시 하드웨어는 트랩을 발생시킨 프로세스를 강제로 종료시키고 적절한 오류 메시지 출력

     - 듀얼 모드
     : mode bit로 OS영역과 User영역에서 실행 해야하는 것을 구별
     : Kernel mode vs User mode : H/W의 지원이 요구 됨
     : 문제를 일으킬 소지가 있는 명령어는 특권 명령으로 분류하고 이 명령은 커널 모드에서만 수행되도록 하여 프로세스를 보호
     : 사용자는 운영체제만이 수행할 수 있는 명령의 수행을 부탁하여 운영체제와 상호작용, 이런 요청을 보통 시스템 호출이라 하며, 하드웨어는 이런 시스템 호출을 소프트웨어 인터럽트로 간주한다.
     : 예) Set value of timer (Users/Kernel)
          Read the clock (Users/Kernel)
          Turn off interrupts (Users/Kernel)
           Access I/O devices (User/Kernel)
           Issue a trap instruction (User/Kernel)

  • 주기억장치 보호
     : 기준 레지스터(base register), 한계 레지스터(limit register) 이용

  • 중앙처리장치 보호
     : 운영체제가 항상 제어권을 확보할 수 있도록 해야함.

     - Timer
     : 일정시간이 경괃되면 타이머는 인터럽트를 발생하여 운영체제에 제어권을 넘긴다.
     : 시분할을 구현하기 위해서도 사용

  • Program vs Process
     : 프로세스는 현재 실행 중인 프로그램(프로그램이 주기억장치에 적재된 상태)
     : 실행상태에 있는 프로그램의 인스턴스


'Major > Operating System' 카테고리의 다른 글

운영체제 - Process synchronization  (0) 2015.11.10
운영체제 - CPU schedulering  (0) 2015.11.10
운영체제 - Thread  (0) 2015.11.10
운영체제 - Process  (0) 2015.11.09
컴퓨터구조  (1) 2015.11.09

+ Recent posts