OS (1)

2 분 소요

운영체제란?

  • 운영체제란 사용자가 컴퓨터의 하드웨어(cpu, ram, ssd, hdd)에 대해선 몰라도
  • 응용프로그램(소프트웨어)를
  • 사용자의 키보드와 마우스의 명령으로 사용할 수 있게끔 해주는
  • 소프트웨어이다. (다른 소프트웨어들과는 다르게 하드웨어인 cpu, 메모리, hdd 등을 다 관리해준다.)
  • 목적
    1. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공
      • 각각의 사용자/프로그램의 입장에선 자신이 컴퓨터에서 독자적으로 실행되고 있는 illusion을 가진다.
      • 사실은 운영체제가 여러개의 사용자/프로그램을 동시에 실행시키며 관리하고 있다.
    2. 컴퓨터 시스템의 한정된 자원(cpu, 메모리, I/O장치…)을 효율적으로 관리
      • cpu 스케쥴링 → 실행중인 프로그램들에 짧은 시간씩 cpu를 번갈아 할당하여 실행시킨다.
      • 메모리 → cpu에서 프로그램을 실행시키려면 반드시 메모리에 프로그램을 올려놔야한다. 메모리는 cpu의 작업공간이다.
      • 한정된 주어진 자원으로 최대한의 성능을 낼 수 있도록 → 효율성
      • 특정 프로그램/사용자에게 지나친 불이익이 발생하지 않도록 → 형평성
      • 자본주의같다… 사회구성원들이 각자 열심히 살아서 노력한만큼 부를 축적하며 효율적으로 살아가지만, 그 속에서 사회구성원간의 형평성이 보장되도록 복지라는 것이 있으니…
  • 운영체제는 컴퓨터가 부팅되면 기본적으로 메모리에 바로 올라간다. 컴퓨터가 꺼질 때까지 계속 메모리에 상주해있는다.
  • 역할
    1. cpu 스케쥴링
    2. 한정된 메모리 관리
    3. 디스크 스케쥴링 (디스크에 들어온 요청을 효율적으로 처리) (엘레베이터 스케쥴링이랑 똑같다.)
    4. 인터럽트, 캐싱

CPU

  • 메모리에 있는 것을 계속 읽어다가 기계어를 해석해서 실행(연산)시킨다.
  • cpu 스케쥴링
    • 어떤 프로그램에게 얼마동안 cpu 사용권을 줄까?
    • 실행중인 프로그램들에 짧은 시간씩 cpu를 번갈아 할당하여 실행시킨다.
    • cpu는 단순 하드웨어라 어떤 프로그램에 얼만큼 cpu를 할당시킬지를 스스로 생각하지 못한다. 단순 연산만 하는 애다.
    • 이를 생각하고 결정내려주는게 바로 os이다. cpu 스케쥴링을 하는 주체는 os이다.
    • FCFS : First Come First Served → 먼저 cpu큐에 들어온 프로세스에게 먼저 cpu를 주는 방식 (효율적이진 못하다.)
    • SJF : Shortest Job First → cpu큐에 있는 프로세스 중 cpu를 제일 짧게 쓰는 프로세스에게 cpu를 먼저 주는 방식 (효율적이지만 형평성은 어긋난다. starvation - cpu를 길게 쓰려는 프로세스가 무한정 기다릴수도…)
    • RR : Round Robin → 가장 많이 쓰인다. 짧은 고정된 시간동안만 프로세스가 cpu를 쓰게 하고 고정된 시간이 지나면 cpu점유권을 빼앗고 다음 프로세스에게 cpu를 넘겨주는 방식

메모리 관리

  • 디스크에 존재하는 실행파일을 실행시키려면 해당 실행파일의 프로세스가 메모리에 올라가고 cpu는 메모리에 있는 프로세스를 실행시켜서 실행이 된다.
  • 하지만 디스크의 실행파일의 프로세스가 물리적인 메모리에 바로 올라가는 것이 아니라 중간단계인 가상메모리에 먼저 올라간다.
  • 가상메모리에서도 당장에 실행하는데에 필요한 부분만 먼저 물리적인 메모리에 올린다. (메모리를 효율적으로 사용하기 위해)
  • 그럼 당장에 안쓰이지만 프로세스가 돌아가는데에 필요한 부분인 가상메모리에 남겨져있는 것은 디스크(스왑영역)에 위치하게 된다.
  • 메모리가 꽉 차있는데 다른 프로세스가 들어가야하면 기존에 있던 것들 중 하나를 쫓아내야하는데 쫓아낸 것이 위치하는 곳도 디스크(스왑영역)이다.
    • 프로세스를 최소 단위로 쪼갠 것이 페이지다.
    • 어떤 페이지를 내쫓을까를 결정하는 것이 메모리 관리이다.
    • LRU : 가장 오래 전에 참조한 페이지를 삭제
    • LFU : 지금까지 참조된 횟수가 가장 적은 페이지를 삭제
  • 스왑영역은 물리적 메모리의 연장공간이다.

디스크 스케쥴링

  • 디스크를 효율적으로 사용하는 것인데 이는 디스크 헤드의 이동을 최소화시키는 것과 같다.

인터럽트, 캐싱

  • cpu > 메모리 > 디스크는 각각 속도차이가 엄청 크다. 이 장치간 속도차이를 극복하고자하는게 인터럽트와 캐싱이다.
  • 인터럽트
    • cpu가 a프로그램을 메모리에 올려두고 실행시키는데 파일을 읽는 i/o작업을 실행하게 되면 cpu가 직접 디스크를 읽는 것이 아니라 디스크 컨트롤러라는 소형cpu에게 대리로 맡긴다.
    • cpu는 디스크보다 100만배 빠르기 때문에 디스크가 파일을 읽어오는 것을 기다리는건 엄청난 자원의 낭비라 cpu는 이를 기다리지않고 바로 메모리에 있는 다음 b프로그램을 실행시킨다.
    • 만약 a프로그램이 디스크 파일 읽기가 끝나서 cpu에게 넘겨줘야할 때, 바로 그 때 디스크 컨트롤러가 cpu에게 인터럽트를 걸어서 알려준다..
    • cpu는 기계어를 실행하고 나서 항상 인터럽트 체크를 한다. 들어온 인터럽트가 있는지…
    • 만약 인터럽트 들어온게 있으면 cpu는 무조건 운영체제에게 넘어간다. ㄷㄷ
    • 운영체제는 이제 그 인터럽트를 보고 아 a프로그램의 디스크 파일 읽기가 끝났으니 cpu가 a프로그램에 의해 다시 점유되어야겠구나! 라고 판단해서 cpu에게 a프로그램을 실행시키도록 한다.
  • 캐싱
    • 한번 디스크→메모리로 불려졌던 데이터를 캐시에 미리 저장시켜서 다음에 다시 불려질 때 디스크까지 가지 않고 캐시에서 꺼내먹어요~
    • 어떤 데이터를 캐싱해야하 값어치가 있는가? 자주 불리겠는가? 이게 중요 포인트다.

카테고리:

업데이트:

댓글남기기