OS가 무엇이냐?
⇒ OS는 프로그램이다!
OS는 Application의 실행을 control하는 프로그램이다.
→ OS는 Application을 최소로 방해해야한다.
Application과 Hardware를 연결하는 인터페이스 역할을 하는 프로그램이다.
→ Programmer가 hardware를 건드리지 않아도 돼야 한다.
Application program의 실행은 OS 위에서 실행된다.
하드디스크에서 데이터를 가져올 때 단위가 있다.
정수 하나만을 가져오지 않는다.
→ 정수가 포함되어 있는 한 블럭이 온다.
메모리에 버퍼를 하나 만들어 놓고 정수를 모아 놓고 하나씩 가져다준다.
이 역할을 하는 것이 라이브러리이다.
모든 입출력 문장들은 system call이 아니라 라이브러리 함수이다.
이 함수 안에서 입출력을 편하게 할 수 있도록 버퍼 관리를 한다.
System call에는 READ, WRITE 두 개만 존재한다.
(printf, scanf 입출력)
모든 자원(I/O device, CPU, memory, ...)을 관리하며 프로그램들이 이를 효율적으로, 공평하게 사용할 수 있도록 시스템과 리소스를 관리한다.
메인 메모리 안에 들어 있는 OS의 부분
꼭 필요한, 자주 사용되어지는 중요한 OS 부분이다.
시스템에 따라 OS == Kernel인 것도 있다.
엄청 구식 프로그램 처리 과정
A 프로그램이 종료된 후 B 프로그램이 자동으로 시작되어 Operator가 개입하지 않아도 되는 시스템
여기까지는 한 번에 한 프로그램만 실행할 수 있었다.
CPU가 한 번에 하나의 프로그램만 실행 하는 것
CPU가 I/O 작업이 끝날 때까지 기다려야한다.
→ CPU의 3.2%만 사용하는 낭비가 된다.
Program을 중단시키고 다른 프로그램을 실행시키는 작업이 가능하게 되었다.
→ 중간에 Program을 바꿀 수 있게 되었다.
하나의 작업이 I/O 작업을 위해 기다려야 할 때 CPU가 다른 작업을 할 수 있는 것
A Program 실행
↓
A의 I/O 작업 → OS 개입
↓
B Program 실행
↓
B의 I/O 작업 → OS 개입
↓
C Program 실행
↓
C의 I/O 작업 → OS 개입
→ I/O가 일어나지 않으면 프로그램이 변경되지 않는다.
User가 컴퓨터 앞에 앉아 있을 수 있을 때는 Time Sharing System이 실행되고 난 이후이다.
일단 time slice 단위로 시간을 나누고 timeout이 될 때까지 실행하다가 다른 프로그램을 실행시킨다.
당연히 여러 프로그램들이 동시에 memory에 올라가 있어야 한다.
I/O 작업을 할 때도 프로그램이 변경된다.
→ 맞을 수도 있고 아닐 수도 있다.
→ O
단, TimeSharing 시스템과 Multi Programming 시스템은 프로그램이 바뀌는 시점이 다르다.
Batxh MultiProgramming | TimeSharing | |
---|---|---|
주된 목적 | CPU의 사용도를 최대화 하는 것 | Response time 을 최소화 하는 것 |
I/O가 없으면 그냥 계속 기다려야한다. | - Time slice 조정이 매우 중요하다. - 너무 짧아도 안되고 너무 길어도 안된다. → 너무 짧으면 OS가 너무 끊임없이 끼어들게 된다. |