운영체제의 정의, 목적, 컴퓨터 시스템 내에서의 기능
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 SW와 HW를 연결하는 소프트웨어 계층
(1) 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행함
(2) 자원(CPU, 메모리, I/O 장치)을 효율적으로 관리
-
효율성 : 주어진 자원으로 최대 성능을 내도록
-
형평성 : 특정 사용자/프로그램에 지나친 불이익이 없도록, 하나의 프로그램에만 메모리 엄청 주고 다른 프로그램들은 엄청 조금 할당받음 -> 이러면 안되니까 이러한 사항들을 다 고려함, 효율성도 중요하지만 형평성도 중요함
-
CPU는 컴퓨터의 두뇌라고도 불림, 실행중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 할당(CPU 스케줄링)
-
메모리는 CPU의 작업 공간, 프로그램에 실행되려면 메모리에 load되어야 함, 운영체제는 실행중인 프로그램들에 메모리 공간을 적절히 분배함
- CPU는 메모리에 있는 프로그램을 읽어다가 실행함
- CPU는 외부 장치에 직접 접근할 수 없음 -> I/O를 전담하는 작은 CPU들이 붙어있음 -> 그게 I/O Controller임 -> CPU가 I/O Controller에 부탁함
-
CPU 스케줄링 : 어떤 프로그램한테 CPU 사용권 줄까?
근데 실제로 운영체제는 다른 프로그램한테 CPU 넘겨줬을때 다시 뺏어올 수 있는 방법 없음 -> 하드웨어적인 장치가 있어서 그거랑 협조해서 CPU를 뺏어옴
-
메모리 관리 : 한정된 메모리를 어떻게 쪼개어 쓸 것인지
-
디스크 스케줄링 : 디스크에 들어온 요청을 어떤 순서로 처리할 지
-
인터럽트, 캐싱 : 빠른 CPU와 느린 I/O 장치 간의 속도 차이를 어떻게 극복할 지
- 캐싱 : 메모리에 미리 저장해놨던거를 똑같은 요청 들어오면 굳이 디스크까지 가지 않고 미리 저장해놓은거 사용함
- 인터럽트 : 프로그램 실행하려고 하는데 I/O 작업이 필요함. 그럼 CPU는 I/O한테 요청을 함. 그동안 CPU는 놀고 있지 않고 지금 할 수 있는 다른 일 먼저 하고 있음. 근데 I/O에서 CPU가 요청했던 작업이 끝났음. 그럼 I/O에서는 CPU에 인터럽트를 보냄. CPU에서는 하나의 기계어를 처리하고 나면 매번 인터럽트의 유무를 봄. 만약 인터럽트 들어왔으면 CPU는 자동으로 운영체제한테 넘어가게 되어있음. 운영체제는 인터럽트를 확인하고 그 프로그램한테 CPU 다시 넘겨줌.