[반효경 운영체제 학습] 01

선을로·2022년 9월 27일
0

운영체제란?

운영체제(Operating System, OS)

컴퓨터 하드웨어 바로 위에 설치되어
사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층

  • 컴퓨터가 하드웨어로 구성되어 있는데
    운영체제는 각종 애플리케이션 프로그램들을 편하게 사용할 수 있게 해주는 역할을 한다.
  • 운영체제 윗단에서 사용자가 각종 소프트웨어를 편하게 쓸 수 있게 하기 위해 하드웨어를 관리한다.
  • 다른 응용 소프트웨어들과는 다르게 하드웨어를 직접 관리하면서 사용자에게 편리한 인터페이스 또한 제공하기 때문에 대단히 까다롭고 복잡한 소프트웨어라 할 수 있겠다.
  • 실제로 여러 프로그램을 각자 독자적으로 돌리는 것처럼 컴퓨터를 실행할 수 있게 하는 역할
  • 예를 들어 음악을 들으며 웹서핑을 동시에 하는 것 같은 기능들이 가능하게 한다.
    그림 속 'Abstract Machine(가상머신)'이 여럿이서 각각 쓰는 컴퓨터이고,
    'Physical Machine(물리머신)'이 그것을 관리하는 서버개념으로 보고 나 혼자 이 서버를 사용하는 일루전을 제공하고,실제적인 처리는 운영체제가 해준다고 보면 되겠다.
  • 여러 프로그램이 하나의 컴퓨터에서 돌아가는 것을 운영체제가 자원에 대해 쉐어링을 해준다.
    즉,여러 프로그램에게 CPU를 번갈아 할당해준다.
  • 메모리는 CPU의 작업공간.
    CPU에서 프로그램이 실행되려면 먼저 메모리에 프로그램을 올려놔야함.
    어떤 프로그램을 어떤 순서로 메모리에 올려놓아야 하나?이것이 운영체제의 중요한 일이기도 함.
  • 컴퓨터 내부: CPU, 메모리
  • 컴퓨터 외부: 입출력(I/O) 디바이스(디스크, 키보드, 프린트, 모니터 등등)
  • 컴퓨터의 전원을 켜면 부팅(booting)을 하는데,
    부팅을 하면 메모리에 운영체제가 올라가서 실행이 된다고 보면 된다.
    컴퓨터가 꺼지기 전까지 항상 실행된다.
  • 운영체제의 핵심적인 부분은 '커널'인데,
    커널은 메모리에 언제나 상주하면서..커널을 제외한 운영체제 부분들은 프로그램들을 돌려준다.
  • CPU가 매 클럭(clock) 마다 메모리(프로그램이 적재되있는)어딘가에 있는 기계어를 읽어다가 연산을 한다.
  • CPU가 디스크 장치나 IO장치에서 직접 프로그램을 가져올 수 있나?
    아니다. CPU는 메모리로 옮겨진 프로그램만 작업한다.
    IO디바이스에는 작은 CPU 같은 역할을 하는 IO컨트롤러와 작은 메모리가 있기 마련인데,
    CPU가 프로그램이 필요하다고 요청
    -> IO 컨트롤러가 데이터를 내장 메모리에 받아서 PC의 메모리로 보내준다.
  • 어떤 프로그램에게 CPU 사용권을 줄까?언제?얼마만큼 줄 지 운영하는게 CPU스케줄링이라 함.
  • 만약 어떤 프로그램이 무한루프를 돌아서 CPU를 무한으로 독점하면 어떻게 될까?
    이럴 경우 운영체제 혼자서는 감당하기 어렵고,
    하드웨어적으로 이것을 방지하는 장치가 있어서 협조해서 CPU스케줄링을 한다 함.
  • 메모리관리?
    한정된 메모리 공간을 운영체제가 얼마나 효율적으로 사용하는 지
  • 디스크 스케줄링?
    보통 디스크의 파일을 읽어달라고 요청하면 디스크는 CPU에 비해 너무 느리기 때문에
    다음 프로그램에게 CPU사용권을 준다.
    근데 만약 여러개의 프로그램들이 디스크에 요청을 하면
    디스크의 IO컨트롤러는 먼저 온 요청 순서와는 상관없이 효율적으로 스케쥴링 하는데
    이것이 디스크 스케쥴링이라 한다.
  • CPU와 IO컨트롤러의 속도차이가 100만배 이상 난다는데
    이것을 어떻게 극복할까?
    인터럽트: CPU가 IO에 데이터 요청을 해놓고 메모리에 있는 것을 작업하는 동안,
    IO가 데이터를 읽는 작업을 끝내면 CPU한테 알려주는 것을 인터럽트라는 방법으로 한다.
    CPU는 메모리에 있는 프로세스들을 통해 기계어를 읽으며 작업하고 그게 끝날때마다
    인터럽트 체크를 한다.혹시 인터럽트가 들어오진 않았는 지 확인한다.
    인터럽트가 들어왔다면 CPU는 뭘하고 있던 무조건 운영체제로 넘어가서 인터럽트가 걸린 이유를 알아내고 그것에 해당하는 일을 수행한다.
    캐싱: 중간 단계에 두는 것. 똑같은 데이터를 또 읽어 달라하면 메모리에 복제본으로 저장해놨던 것을 다시 읽어가면 된다.
  • 프로그램이 CPU에서 실행되다가 "디스크에 있는 파일을 읽어야한다"하면 요청을 하고 그것이 올때까지 기다려야하기 때문에 그 프로그램은 맨뒷순서로 보내고 다음 프로그램을 읽는다.
  • 디스크 등의 IO컨트롤러가 인터럽트를 보내오면,
    운영체제를 통해 데이터를 받아서 CPU큐에 넣는다.

Reference

http://www.kocw.net/home/cview.do?cid=4b9cd4c7178db077
(이미지 출처도 포함됨)

0개의 댓글