1. 운영체제의 분류 1) 동시작업 가능 여부 : 단일 작업 ex) MS-DOS프롬프트 상에서는 한 명령의 수행을 끝내기 전 다른 명령 수행 불가 : 다중 작업 ex) UNIX, MS Windows등에서는 한 명령 수행이 끝나기 전 다른 명령 수행 가능
2) 사용자 수
3) 처리 방식 : 일괄 처리(batch processing) - 작업 요청의 일정량을 모아 한번에 처리. 작업이 완전 종료될 때까지 대기해야 함 : 시분할(time sharing) - 일괄 처리 시스템에 비해 짧은 응답 시간. 컴퓨터 처리를 일정한 시간 단위로 분할해 사용 - ex) UNIX 등. : 실시간(Realtime OS) - 정해진 시간 안에 어떤 일이 반드시 종료됨이 보장되어야 함(데드라인) - ex) 경성 실시간 시스템 - 원자로 제어, 미사일 제어 등 연성 실시간 시스템 - 동영상 끊김 등(초당 n프레임의 데드라인)
2. 운영체제의 예 1) 유닉스(UNIX) : 서버를 위한 운영체제로서 등장 - 복잡 : 높은 이식성 : 코드의 대부분이 C언어 : 최소한의 커널 구조 : 복잡한 시스템에 맞게 확장이 용이 : 소스 코드 공개 : 프로그램 개발에 용이 : 다양한 버전(System V, FreeBSD, SunOS, Solaris, Linux)
2) DOS : MS사에서 1981년 IBM-PC를 위해 개발 : 단일 사용자용 운영체제
3) MS Windows : 네트워크 환경 강화 : DOS용 응용 프로그램과의 호환성 : 불안정성
4) Handled device를 위한 OS : PalmOS, Pocket PC, Tiny OS
3. Mode bit : 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 보호장치 필요 : Mode bit을 통해 하드웨어적으로 두 가지 모드의 operation 지원 1. 사용자 모드 - 사용자 프로그램 수행 2. 모니터 모드 - OS코드 수행 (=커널 모드, 시스템 모드) : 보안을 해칠 수 있는 주요 명령어는 모니터 모드에서만 수행 가능한 '특권명령'으로 규정 : interrupt나 Exception 발생시 하드웨어가 Mode bit을 0으로 바꿈 : 사용자프로그램에게 cpu를 넘기기 전에 Mode bit을 1로 세팅
4. Timer : 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴 : 타이머는 매 클럭 틱 때마다 1씩 감소 : 타이머 값이 0이 되면 타이머 인터럽트 발생 : cpu를 특정 프로그램이 독점하는 것으로부터 보호 => 타이머는 Time sharing을 구현하기 위해 널리 이용됨
5. 컴퓨터 시스템 구조 : 시스템콜 - 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널함수를 호출하는 것 : 인터럽트 - 인터럽트 당한 시점의 레지스터와 프로그램 카운터를 save한 후 cpu의 제어를 인터럽트 처리 루틴에 넘긴다 - 넓은 의미 : 하드웨어 인터럽트(하드웨어가 발생시킨 인터럽트) : trap(소프트웨어 인터럽트) - Exception 프로그램이 오류를 범한 경우 - System call 프로그램이 커널 함수를 호출하는 경우 - 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고있음 - 인터럽트 처리 루틴(인터럽트 핸들러) - 현대 운영체제는 인터럽트에 의해 구동됨
6. 동기식 입출력과 비동기식 입출력
1) 동기식 입출력(synchronous I/O) - 싱크로=동시에, 시간적으로 잘 맞게, 동기화 : I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 : 구현방법 # 1. I/O가 끝날 때까지 CPU를 낭비시킴 -> 매시점 하나의 I/O만 일어날 수 있음 # 2. I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음 -> I/O 처리를 기다리는 줄에 그 프로그램을 줄세움 -> 다른 프로그램에게 CPU를 줌
2) 비동기식 입출력 : i/o가 시작된 후 입출력 작업이 끝나길 기다리지 않고 제어가 사용자 프로그램에 직접 넘어감
=> 1), 2) 모두 I/O의 완료는 인터럽트로 알려줌
7. DMA(Direct Memory Access) : 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용 : cpu의 중재 없이 디바이스 컨트롤러가 디바이스의 buffer storage의 내용을 메모리에 block 단위로 직접 전송 : 바이트 단위가 아니라 block 단위로 인터럽트를 발생시킴