부팅과 부트로더
·
CS/OS
부팅PC가 켜진 후에 OS가 실행되기 전까지 수행되는 일련의 작업 과정 의미프로세서 초기화 (멀티코어 관련 처리 포함)메모리와 외부 디바이스 검사 및 초기화부트로더를 메모리에 복사하기OS를 시작하는 과정BIOS (Basic Input / Output System) : 하드웨어와 관련된 부팅 작업POST (Power On Self Test) : BIOS가 수행하는 각종 테스트나 초기화 BIOS메인보드에 포함된 펌웨어(Firmware)의 일종입출력을 담당하는 작은 프로그램PC 메인보드에 롬(ROM)이나 플래시 메모리로 존재전원이 켜지면서 동시에 프로세서가 가장 먼저 실행하는 코드부팅 옵션 설정시스템 전반적인 설정 (Configuration) 관리설정 값으로 시스템을 초기화하여 OS 실행BIOS가 제공하는 기..
운영 모드
·
CS/OS
x86-64 프로세서 (인텔 64비트 호환 프로세서)에는 다섯 가지의 운영 모드가 존재한다. 컨트롤 레지스터와 인터럽트를 통해 각 모드로 전환할 수 있다.   다섯 가지 운영모드가 모두 구현되어야만 OS를 만들 수 있는 것은 아니다. 목적에 따라 몇개의 운영모드는 구현하지 않거나 필요하면 구현하는 방식으로 진행할 수 있기 때문에, 이 중에서도 필수모드와 선택 모드로 구분된다.  운영 모드필수 운영 모드리얼모드프로세서가 전원이 켜지거나 리셋되면 프로세서는 리얼모드로 진입함 (이전에 어떤 상태인지는 상관 없음)16비트 프로세스와 동일하게 동작BIOS(Basic Input Output System)의 여러 기능을 사용할 수 있음 => 디스크 읽기 및 쓰기, 그래픽 모드 전환 등 제공디바이스 드라이버를 제작하지..
CPU Scheduling
·
CS/OS
Scheduling MetricsTurnaround time\[T_{turnaround} = T_{completion} - T_{arrival}\]프로세스가 생성된 시간부터 종료된 시간까지 걸린 시간으로 기다린 시간까지 포함Response time\[T_{response} = T_{firstrun} - T_{arrival}\]처음 실행때까지 걸린 시간 / 즉 요청을 보낸 후 처음 프로세스가 실행된 시간  Workload Assumptions cpu의 운영 방식을 가정하면서 가장 효율적인 CPU scheduling 방식이 무엇인지 찾아보고자 한다.Each job runs for the same amount of time ( 모든 프로세스가 같은 시간이 소요됨 )All jobs arrive at the sa..
Limited Direct Execution
·
CS/OS
Direct Execution응용프로그램이 실행할 때 모든 권한을 다 주는 것문제점 : 프로세스가 여러개가 돌면 불가능함OSProgram[프로그램이 실행되기 위한 기본 환경 세팅]Create entry for process list - entry = PCB프로세스를 제어하기 위해 PCB를 생성한 후 process list에 넣기Allocate memory for program프로세스가 사용할 메모리 영역 할당 Load program into memory 실행을 위한 instructions 로딩( 메모리 적재)complie 한 exe 파일은 storage에 저장되어 있기 때문임Set up stack with argc/argv 응용 프로그램이 실행되기 위한 user stack만들기 (argc/argv를 넣어..
Process
·
CS/OS
Program vs ProcessProgram : 기계어 instructions + 디스크의 static data의 집합컴파일된 exe파일기계어 instruction : cpu가 이해하는 언어 static data : 컴파일 될 때 해당 메모리 영역이 유지되며, 변경된 값이 유지되고, 어디서든 접근 가능 ex) global, staticexe파일이 여러번 실행 >> process 여러개 생성  Process : 실행되고 있는 프로그램메모리 : instructions (메모리에 적재 - code) & data (프로그램 실행에 따라 변경됨)레지스터 : program counter (cpu가 실행해야하는 인스트럭션 위치를 가리키는 레지스터 ) & stack pointer 등오픈한 파일의 list와 상태정보 ..
Data Structures (Process Control Blocks)
·
CS/OS
PCB (Process Control Blocks)프로세스의 정보를 저장하고 있는 데이터 블럭 Linux Kernel > /include/linux/sched.h struct task_struct {...}> PCB 역할을 해주는 구조체 volatile long state;unsigned int __state;unsigned int saved_state;> 현재 프로세스의 상태를 나타내줌 running → TASK_RUNNINGready → TASK_RUNNING (X)bocked → TASK_INTERRUPIBLE 등 (blocked의 종류에 따라 달라짐)void *stack;> Pointer to the kernel-mode stack프로세스 마다 스택이 존재함 → user-mode stack / ..
Disk Scheduling (디스크 스케줄링)
·
CS/OS
디스크 구조 Taccess (디스크 접근시간) = Tseek (탐색 시간) + Trotation (회전 지연시간) + Ttransfer(전송 시간)disk queue : 디스크에 오는 요청을 저장해두는 queue > 디스크 스케줄링 알고리즘을 이용하여 시간을 감소시킴 Disk Scheduling AlgorithmFCFS ( First Come First Served ) disk queue에 요청이 들어온 순서대로 처리장점 : 공평하게 요청을 처리할 수 있음, 단순한 알고리즘단점 : 비효율적임 > 헤드가 움직이는 거리가 매우 커짐 SSTF ( Shortest Seek Time First )탐색 시간이 가장 짧은 것을 선택함  장점 : Seek Time이 적음, 처리량을 극대화할 수 있음단점 : starva..