운영체제란?

역할

  1. CPU 스케줄링
  2. 메모리 관리
  3. 프로세스 관리
  4. 입출력 관리
  5. 파일 관리

시스템구조

image

  1. CPU
    • Mode bit : 현재 CPU를 사용하는 주체를 판단, 사용자 모드에서는 위험한 명령어를 제한시킨다
      • OS가 사용할 때는 0 [커널 모드]
      • 사용자 프로세스가 사용할 때는 1 [사용자 모드]
    • Interrupt Line : CPU로 요청이 들어온 인터럽트를 보관
      • 인터럽트가 존재하면 사용중이던 CPU를 OS에게 할당한다
      • CPU를 할당받은 OS는 해당 프로세스를 block -> wait 상태를 전환시킨다
  2. Memory : CPU의 작업공간
    • 오직 CPU만 접근 가능
    • 부팅시 운영체제가 메모리에 적재된다.
  3. I/O Device
    • 입출력장치 : 디스크, 키보드, 마우스, 프린터, 모니터 등
    • Device Controller : I/O장치를 관리하는 작은 장치(CPU)
    • Buffer : 디바이스 컨트롤러의 작은 작업공간(메모리)
  • Timer : 해당 주기마다 인터럽트를 발생시킨다(타이머 인터럽트)
    • 특정 사용자 프로세스에서 무한루프에 빠져 CPU를 독점하는 것을 막는다.
  • DMA(Direct Memory Access) Controller
    • CPU만 접근가능한 메모리를 CPU의 중재 없이 접근 가능하게 하는 장치
    • 디바이스 컨트롤러가 자신의 버퍼에 있는 결과값을 직접 메모리에 전송 가능하게 해준다
    • 인터럽트가 너무 자주 걸리는 것을 막기 위해 특정 사이즈(블록) 단위로 인터럽트 발생시킨다
  • 인터럽트
    • 인터럽트가 발생하면 사용중이던 CPU를 OS에게 할당한다
    • CPU는 해당 장치의 버퍼에 가서 데이터를 읽어와 메모리에 올린다
    • 하드웨어 인터럽트 : I/O장치에 의해 발생, I/O장치가 CPU에게 작업이 완료됐음을 알리는 것
    • 소프트웨어 인터럽트 : 시스템콜(사용자 프로그램에 의해 발생)
  • 시스템콜 : 사용자 프로그램이 운영체제의 서비스를 받기 위해 시스템을 호출하는 것
    • 해당 사용자 프로그램이 직접 인터럽트를 발생
    • 그 결과 CPU는 운영체제에게 할당되어 운영체제가 동작한다

멀티프로그래밍, 멀티태스킹, 멀티프로세싱, 멀티쓰레딩

멀티태스킹 = 멀티프로그래밍
→ 다수의 프로그램을 동시에 실행한다는 것을 동일하다
→ 다만, 관점의 차이이다

  1. 멀티태스킹 : 다수의 프로그램을 동시에 실행하는 것

  2. 멀티프로그래밍 : 하나의 프로세서에서 다수의 프로그램을 동시에 실행하는 것
    • 다수의 프로그램이 메모리에 적재되어 있는데 운영체제 스케줄링에 의해 번갈아서 처리
    • 실제로는 하나의 프로세스에 CPU가 할당 되지만 시분할을 통해 동시에 사용하는 것 처럼 느낄 수 있다
    • 프로세서의 자원낭비를 막음
  3. 멀티프로세싱 : 다수의 프로세서에서 다수의 프로그램을 동시에 실행하는 것

  4. 멀티쓰레딩 : 하나의 프로세서에서 다수의 쓰레드를 돌리는 것

https://velog.io/@chy0428/OS-%EB%A9%80%ED%8B%B0%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EB%A9%80%ED%8B%B0%ED%94%84%EB%A1%9C%EC%84%B8%EC%8B%B1