
인터럽트란? CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 창지나 또는 예외상황이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술 > 어느 한 순간 CPU가 실행하는 명령은 하나! 다른 장치와 어떻게 커뮤니케이션을 할까요? 인터럽트가 필요한 이유 * 선점형 스케줄러 구현 프로세스 running 중에 스케줄러가 이를 중단시키고, 다른 프로세스로 교체하기 위해, 현재 프로세스를 중단 시켜야 한다 현재 프로세스가 중단이 되려면 스케줄러 코드가 실행이 되서 현 프로세스 실행을 중지시켜야 한다 * IO Devices와의 커뮤니케이션 저장매체에서 데이터 처리 완료시 프로세스를 깨워야 한다 (block state -> ready state) * 예외 상황 핸들링 CPU가 프로그램을 실행하고..

선점형과 비선점형 스케줄러 선점형 스케줄러 (Preemptive Scheduling) : 하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할 수 있음 비선점형 스케줄러 (Non-preemptive Scheduling) : 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음 선점형과 비선점형 스케줄러 차이 선점형 : 프로세스 running(실행)중에 스케줄러가 이를 중단시키고, 다른 프로세스로 교체 가능 비선점형 : 프로세스가 자발적으로 blocking상태로 들어가거나, 실행이 끝났을 때만 다른 프로세스로 교체 가능 (exit, I/O or event wait 상태일 때만 또다른 스케줄을 running 상태로 바꿀 수 있다) Waiting = blocking 스케줄러 구..

멀티 프로그래밍과 Wait 멀티프로그래밍 : CPU 활용도를 극대화 하는 스케줄링 알고리즘 Wait : 간단히 저장매체로부터 파일 읽기를 기다리는 시간으로 가정 프로세스 상태 : new, running, ready, block, exit running state: 현재 CPU에서 실행 상태 ready state : CPU에서 실행 가능한 상태 (실행 대기 상태) block state: 특정 이벤트 발생 대기 상태 (예: 프린팅이 다 되었다) 프로세스 상태간 관계 ready, running, block states ① Process blocks for input / 특정 이벤트 대기 ② Scheduler picks another process / ready state ③ Scheduler picks thi..

프로세스 (process)란? 실행 중인 프로그램은 프로세스라고 한다 프로세스 : 메모리에 올려져서 실행중인 프로그램 코드 이미지 (바이너리): 실행 파일, 예: ELF format 프로세스 용어는 작업, task, job 이라는 용어와 혼용 응용 프로그램 =! 프로세스 응용 프로그램은 여러 개의 프로세스로 이루어질 수 있다 하나의 응용 프로그램은 여러 개의 프로세스(프로그램)가 상호작용을 하면서 실행될 수도 있다 간단한 C/C++ 프로그램을 만든다면 -> 하나의 프로세스 여러 프로그램을 만들어서 서로 통신하면서 프로그램을 작성할 수 있다 (IPC 기법) 누가 프로세스 실행을 관리할까요? 스케줄러 스케줄링 알고리즘 어느 순서대로 프로세스를 실행시킬까? - 목표 시분할 시스템 예: 프로세스 응답 시간을 가..

프로세스 스케쥴링 배치 처리 시스템, 시분할 시스템, 멀티 태스킹 배치 처리 시스템 자동으로 다음 응용 프로그램이 이어서 실행될 수 있도록 하는 시스템 배치 처리 시스템과 시분할 시스템 / 멀티 프로그래밍 여러 프로그램을 순차적으로 실행시킬 수 있도록 해주세요. 어떤 프로그램은 실행이 너무 시간이 많이 걸려서 다른 프로그램이 실행하는데 시간을 많이 기다려야 한다 (예: 12시간 프로그램 실행 후 30분 짜리 실행될 때 뒤의 프로그램이 실행될 때 까지 12시간을 기다려야 한다) 여러 사용자가 동시에 하나의 컴퓨터를 쓰려면 어떻게 해야 하나요? (다중 사용자 지원) ※ 멀티 프로그래밍/시분할 시스템이 나왔다 * 시분할 시스템 다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화 하는 시스템이다 * 멀티 태스킹..

CPU Protection Rings * CPU도 권한 모드라는 것을 가지고 있습니다 - 사용자 모드 (user mode) : 일반적인 명령 실행 - 커널 모드 (kernel mode by OS) : 특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능케 하는 모드 kernel 이란? - OS kernel 1. (견과류, 씨앗의) 알맹이 2. (사상, 주제) 핵심 shell 이란? 1. (달걀 견과류 등의 딱딱한) 껍데기 2. 고둥 껍데기 모양의 것 CPU Protection Rings 두 가지 모드 * 사용자 모드 (user mode) : 응용 프로그램이 사용 * 커널 모드 (kernel mode) : OS가 사용 우리가 만드는 프로그램은 맨 위에서 놀고 있습니다 (이미지) 예) 1 ~ 100..