Today Mini Learned :

기록하는 습관 들이기

STUDY - 공부기록/Computer Science

[KOCW] [운영체제] 1. 운영체제의 개요, 역사, 현대 운영체제

얌챠 2021. 4. 28. 20:28
[KOCW] 경성대학교 양희재 교수님의 "운영체제" 강의 수강 기록

 

* 강의 링크는 상단의 강의 이름을 클릭하면 이동할 수 있습니다.

[KOCW] 경성대학교 양희재 교수님 - 운영체제

2차시
- 운영체제 서론
- 운영체제 역사
- 고등운영체제, 인터럽트 기반 운영체제

3차시
- 이중모드, 하드웨어 보호
- 운영체제 서비스

... 를 듣고 정리한 글

운영체제(Operating System)

Control program for computer,
즉 컴퓨터 하드웨어를 관리하는 프로그램

컴퓨터의 자원 하드웨어들을 가장 효율적으로 활용하기 위한 것. 직접 일하지는 않지만 자원 관리자, 자원 할당자 역할을 수행함

Windows, Linux, iOS 등이 있음

운영체제가 없다면?
memory에는 전원이 꺼지면 내용이 사라지게 되어 있음. 따라서 어떤 명령을 수행하려고 프로세서가 메모리에서 내용을 가져오려고 해도 메모리에 내용이 아무렇게나 되어 있기 때문에 실행해도 원하는 기능을 수행할 수 없을 것임. 즉 컴퓨터를 사용할 수가 없음

 

운영체제의 목적

  • 성능을 높임
  • 사용자에게 편의성 제공

컴퓨터의 부팅 과정

(그림)

부가 설명 글로 살짝


운영체제의 역사

하드웨어가 발전해 나가면서 운영체제도 같이 발전해나감

Batch processing system
최초의 OS. 컴퓨터가 데이터를 읽고 컴파일하고.. 이런 작업들을 기존에는 operator(사람)이 해 주었었는데, 이 일련의 작업들을 메모리에 적어두고 컴퓨터가 읽어서 처리하게 함

Multiprogramming system
I/O가 어떤 일들을 하는 데 시간이 오래 걸리는 데 비해 CPU는 계산을 빠르게 수행할 수 있었음. 따라서 어떤 일을 하려고 보면 I/O가 작업을 하는 동안 CPU가 놀고 있는 상황 발생, 따라서 이를 효율적으로 이용하기 위해 메모리에 여러 프로그램을 올려 처리하게 됨
이렇게 되며 CPU scheduling, 메모리 관리, 보호 관련 이슈도 생기기 시작

Time-sharing system
모니터와 키보드가 생기며 interactive해지고, 한 컴퓨터에 여러 개의 단말기가 연결된 상태로 사용을 하게 됨. 기존의 멀티프로그래밍 방법으로는 여러 명이 사용할 수가 없었기 때문에 1초를 쪼개서 조금씩 자주 처리해줌으로써 여러 명이 동시에 사용하는 것 같이 작업을 해줌
이를 통해 가상 메모리, 프로세스간 통신, 동기화가 가능해짐
=> 단일 CPU를 활용한 가장 최선의 OS

...

고등 운영체제로는
memory는 하나인데 CPU가 여러 개인 다중 프로세서 시스템, 다중 컴퓨터를 연결해 사용하는 분산 시스템, 시간 제약이 있는 곳에 활용하는 실시간 시스템 등이 있음


인터럽트 기반 시스템

현대 OS는 인터럽트 기반 시스템

부팅이 끝나서 OS가 메모리에 resident (이 올라온 OS는 전기가 끊길 때까지 메모리에서 내려오지 않기 때문에 resident하다고 함)해 있을 때, 마우스나 키보드 등을 통해 일어난 event로 들어온 전기 신호를 통해 지금 하던 일을 중지하고 OS안에 있는 ISR을 실행하게 된다! 이 때 들어오는 전기 신호를 Interrupt라고 함. 이러한 인터럽트를 통해 운영체제의 코드를 실행하게 된다

하드웨어 인터럽트
하드웨어를 통해 발생한 인터럽트는 OS내의 특정 코드(ISR)을 실행하고 다시 event를 기다리는 대기 상태가 됨

소프트웨어 인터럽트
사용자의 프로그램이 실행되면서 운영체제의 기능이 필요할 때 중간에 소프트웨어 인터럽트가 발생하고, ISR을 실행한 뒤 다시 사용자의 프로그램으로 돌아옴

내부 인터럽트
ex) devided_by_zero 인터럽트 같은 경우는 내부 인터럽트로, 0으로 나누려고 할 때 잘못된 것으로 인식하고 종료해줌

 

이중모드

한 컴퓨터를 여러 사람들이 동시에 사용하거나 / 한 사람이 여러 개의 프로그램을 동시에 사용하는 환경을 이중모드라고 함

이럴 때에는 어떤 한 사람이나 프로그램에서의 실수가 전체에 영향을 주는 경우가 있음. 예를 들어 초기화해버린다던가 꺼버린다던가 하는 치명적인 명령들을 한 쪽에서 실행하면서 난리가 나는 것!

따라서 User모드Supervisor모드를 분리하여 일반 사용자(user)가 치명적 명령을 사용하지 못하도록 함
이러한 치명적 명령을 특권 명령이라 하고, STOP, HALT, RESET, SET_HW 등이 있음

 

이중 모드는 어떻게 구현되는가?

레지스터에 모드를 나타내는 플래그를 이용해서 구분

운영체제 서비스를 실행할 때에는 관리자 모드로, 사용자 프로그램이 실행될 때에는 유저 모드로,
하드웨어/소프트웨어 인터럽트가 발생했을 때에는 관리자 모드로
이런 식으로 유저모드와 관리자모드를 왔다갔다함

 

이중 모드는 하드웨어 보호 역할도 수행함

  1. 입출력장치 보호
    유저의 올바르지 않은 입출력 명령 실행은 다른 사람드의 입출력을 방해할 수 있고, 다른 사람들의 파일을 몰래 읽고 쓸 수도 있음
    따라서 입출력 명령은 특권명령으로 함
    입출력을 하기 위해서는 운영체제에게 요청하고(인터럽트) 운영체제가 입출력을 대행해주는 역할

    * 사용자가 입출력 명령을 직접 내린다면? => Privileged instruction violation, 그런 명령을 내린 프로그램을 강제종료시킴

  2. 메모리 보호
    다른 사용자 또는 운영체제 영역의 메모리 접근을 막음
    MMU를 두어 자기 메모리 범위에만 명령을 내리도록 국한해 두고 다른 메모리 영역 침범을 감시함
    그리고 이 범위 변경은 운영체제만 가능함

    * 사용자가 올바르지 않은 메모리 주소에 접근을 시도한다면? => Segment violation

  3. CPU 보호
    한 사용자가 CPU 시간을 독점하는 것을 Timer를 통해 막음
    일정 시간이 경과되면 타이머 인터럽트가 발생하여 다른 프로그램으로 강제 전환함으로써 CPU 시간이 모든 프로그램에 골고루 갈 수 있도록 함

운영체제 서비스

  1. 프로세스 관리
    프로세스를 생성하고 소멸시키고 동기화, 교착상태 처리 등
    * 프로세스 : HDD에 있는 많은 프로그램 중 실행하기 위해 메모리에 올라와 있는 프로그램
  2. 주기억장치 관리
    프로세스에게 메모리 공간을 할당한다던가 종료 시 메모리 회수, 메모리의 효과적 사용을 위한 일을 함 
  3. 파일 관리
    track/sector로 구성된 디스크를 파일이라는 논리적 관점으로 처리해줌
  4. 보조기억장치 관리
  5. 입출력 장치 관리 등...