목록 분류 전체보기 (299)
Semaphore 동기화를 위한 소프트웨어적 도구로, critical point를 엑세스하는 사용자의 수를 제한하고, 제한 인원 외의 프로세스는 LIST에 넣어 이를 순차적으로 관리한다. 프로세스 제한 수를 관리하는 변수 value와 Wait(), Signal() 두 함수로 이루어져 있다. value는 음수일 때, 그 절댓 값은 대기 중인 프로세스의 수이다. Wait은 value를 확인하여, 그 값이 0보다 작은 값, 즉 1개 이상의 대기가 존재하면 현재 프로세스를 대기열에 넣어두고 block 호출로 프로세스를 중지한다. Signal은 value가 양수이면 아직 사용자 수가 제한 수보다 적음을 의미하므로 무시하고, 0이하의 값, 즉 대기하는 프로세스가 있는 상황에서는 rellease를 통해 사용자 한명을..
Critical section problem - 멀티 스레딩을 이용하여 공통된 변수를 다룰 경우 각각의 스레드가 어느 순간에 변수를 엑세스하는가에 따라 결과값이 다를 수 있다는 문제가 발생할 수 있다. - 이런 Common variable을 update하는 code section을 Critical section이라고 한다. ex1) 값이 10인 정수형 변수 i를 두 스레드 A,B에서 각각 i++ 을 실행한다고 생각해보자. "정상적인 경우" i=10이 메인 메모리에 저장되어 있음 1. thread A) 메인 메모리의 i=10를 꺼내 연산을 위해 레지스터에 저장 2. thread A) 레지스터의 i=10에 1을 더해 i=11 값을 얻음 3. thread A) i=11을 메인 메모리에 저장 후 context ..
Process creation / termination - 프로세스는 프로세스에 의해 생성된다. - 운영체제가 init (PID =1) 프로세스를 만들어두고, 그 프로세스가 자식의 자식을 낳아 트리를 형성한다. ** 모든 프로세스는 고유의 ID (PID)를 갖는다. fork : 새로운 프로세스 생성 exec : 메모리 공간을 새로운 프로그램으로 교체 exit : 프로세스 종료 Zombie process / Orphan process Orphan process : 부모 프로세스와 자식 프로세스는 항상 짝을 이뤄야한다. 부모 프로세스가 자식 프로세스보다 먼저 소멸할 경우 자식은 부모를 잃고 orphan process가 된다. - orphan phan process는 kernel에 의해 init 프로세스를 부..
Cpu scheduling preemtive (선점형) - 우선 순위에 따라 cpu에서의 프로세스의 연산이 다 종료되기 전에 다른 처리가 cpu 자리를 양보받는다. - 현대 멀티 프로세스 환경에 더 적합하다. non-preemtive (비선점형) - I/O interrupt로 대기 상태에 들어가지 않는 한 cpu를 독점하여 프로세스의 연산이 종료되어야만 다른 스케쥴링이 가능하다. - 스케줄러의 호출 빈도가 적고, context switching overhead가 적다. Schedule criteria 1. cpu utilization : CPU 점유율 2. throughput : 시간 당 처리율 3. turn around : 어떤 작업이 생성부터 처리되기까지의 시간 4. waiting time : rea..
Process - Program in execution - states : new / ready/ running / waiting / terminated Process Control Block (PCB) - 하나의 프로세스 당 하나의 PCB 할당. 프로세스의 정보를 저장한다. - state, pc, register information, mmu information, cpu time, pID, list of open files - 레지스터 정보는 인터럽트 이후 복구 시 이전 레지스터 상태를 알아야하기 때문에 저장하고, pID는 프로세스 ID, pc는 program counter로 명령어의 위치 주소를 가리킨다. Job Queue Scheduler Queue안의 process(job)의 할당 순서를 정해주..
Internal Interrupt - program check : 오버플로우, 언더플로우나 Division by zero가 일어날 때 발생. - Page Fault : 무효한 페이지를 참조할 때 발생. - Trace : 디버그 시 프로그램을 한 명령씩 실행. - Superviser Call : 시스템 콜을 실행. External Interrupt - power fail : 전원에 이상이 생길 경우 발생. - hardware check : 주변 기기의 장애가 발생했을 경우 OS에게 알리기 위한 인터럽트 발생. - Timer : 일정 시간마다 하드웨어에서 발생. - I/O : 입출력 장치에서 동작을 처리하는 등 상태 변화가 일어났을 때 발생. - console : 사용자가 키보드와 같은 입출력 장치를 조작할..
Operating system services - process management - main memory management - Secondary memory management - File management - I/O devices management - Networking management - protection Booting - Boot loader : 하드디스크 안의 OS를 RAM 영역으로 가져옴 - Resident process : OS는 컴퓨터가 꺼질 때까지 RAM에 올라와 있어 붙여짐 Kernel and shell History - No oprating system - Batch processing system : 일괄 처리 - Multi-processing system : 병렬처리,..