[운영체제 스터디] - 2. 컴퓨터시스템의 구조

Ader(아더)·2022년 2월 13일
0

OS

목록 보기
2/11
post-thumbnail

[2주차] - 컴퓨터시스템의 구조


운영체제의 종류

  • 서버용, PC용, 스마트디바이스용 운영체제
  • 공개 소프트웨어(Open Source Software)
    - Linux, Android
    • 열심히 만든 소스코드를 공개한 이유?
      • 소프트웨어가 시장에서 가지는 특별한 성질 때문
      • 인건비를 제외하고 추가로 드는 비용이 적거나 없음
      • 독점체제가 가능하기 때문에 후발주자들은 공개로 소스코드를 풀기도 함
      • 이렇게 공개된 소프트웨어들은 많은 사람들의 기여로 인해 더 탄탄한 제품으로 발전

운영체제의 분류

  • 동시 작업 가능 여부

    • 단일 작업(Single tasking)
      • 한 번에 하나의 작업만 처리(MS-DOS)
    • 다중 작업(Multi tasking)
      • 동시에 두 개 이상의 작업 처리(Unix, MS Windows)
  • 사용자의 수

    • 단일 사용자(MS-DOS, MS-Windows)
    • 다중 사용자(UNIX, NT Server)
  • 처리 방식

    • 일괄 처리(Batch Processing)
      • 작업 요청의 일정량을 모아서 한꺼번에 처리
      • 작업이 완전 종료될 때까지 기다려야 함
        예) 초기 천공 카드 시스템
    • 시분할(Time Sharing)
      • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
      • 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
      • interactive한 방식
    • 실시간(Realtime OS)
      • 정해진 시간안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
        예) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어

컴퓨터 시스템의 구조


Mode Bit

  • 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 필요
  • Mode Bit을 통해 하드웨어적으로 두 가지 모드의 operation을 지원한다
    • 1 사용자 모드 : 사용자 프로그램 수행
    • 0 모니터 모드 : OS 코드 수행
    • 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능
    • Interrupt나 Exception 발생시 하드웨어가 modebit을 0으로 바꿈
    • 사용자 프로그램에게 CPU를 넘기기 전에 modebit을 1로 셋팅


Timer

  • 타이머
    • CPU의 독점을 막기위해 사용
    • 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴
  • 타이머는 time sharing을 구현하기 위해 널리 이용됨

인터럽트(Interrupt)

  • 현대의 운영체제는 인터럽트에 의해 구동됨
  • 인터럽트 당한 시점의 레지스터와 PC(program counter)를 저장한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다
  • 하드웨어 인터럽트(Interrupt) : 하드웨어가 발생시킨 인터럽트
  • 소프트웨어 인터럽트(Trap) :
    • Exception : 프로그램이 오류를 범한 경우
    • System call : 프로그램이 커널 함수를 호출하는 경우

시스템콜(System call)

  • 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것

동기식 입출력과 비동기식 입출력

  • 동기식 입출력 (Synchronous I/O)

    • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
    • 구현 방법
      • 구현 방법 1
        • I/O가 끝날 때까지 CPU를 낭비시킴
        • 매시점 하나의 I/O만 일어날 수 있음
      • 구현 방법 2
        • I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음
        • I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움
        • 다른 프로그램에게 CPU를 줌
  • 비동기식 입출력 (Asynchronous I/O)

    • I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
  • 두 경우 모두 I/O의 완료는 인터럽트로 알려줌


DMA(Direct Memory Access)

  • 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
  • CPU의 중재 없이 device controller가 devicedml buffer storage의 내용을 메모리에 block 단위로 직접 전송
  • 바이트 단위가 아니라 block 단위로 인터럽트를 발생시킴

이 포스팅은 반효경 교수님의 2017 운영체제 강의를 바탕으로 제작되었습니다.

profile
하루하루 성장하는 개발자

2개의 댓글

comment-user-thumbnail
2022년 2월 15일

아더 운영체데 공부 열심이시군요! 3주차도 보러올게요

1개의 답글