메모리에 instruction data가 올라오고 cpu는 매 클럭마다 instruction을 수행 컴파일러: high lever language를 다른 언어로 변환(컴파일)하고 그 결과를 목적 파일에 써 놓는 프로그램 인터프리터: 기계어로의 컴파일 과정을 거치지 않고 소스코드를 바로 실행하는 일종의 가상머신 어셈블러: 어셈블리 언어 프로그램을 기계어 프로그램으로 변환함 레지스터 - 레지스터는 메모리에서 가져온 데이터를 저장하는 CPU 내부 스토리지이다. - 한 사이클에 읽거나 쓸 수 있다. - 산술논리 연산자가 동작한다 - MIPS ISA에는 32개의 32bit 레지스터가 존재한다. 각 레지스터는 32개의 플립플롭을 가지고 있다. - 레지스터가 32개인 이유는 레지스터 수가 매우 많으면 단순히 더 멀리..
컴퓨터의 세가지 중요 요소 - computation, communication, storage/memory 성능이 높아질수록 필요한 파워가 늘어나 효율이 좋지 않음 -> 하나의 코어의 성능을 높이기보다는 여러 개의 코어를 사용하는 것으로 바뀜 Performance = 1/execution time Cpu execution time = Cpu clock cycles(required for executing a program) X Clock cycle time Clock cycle time = 1/clock speed Execution time = clock cycle time X instructions X avg CPI(avg clock cycle per instruction) SPEC: System Pe..
Cash coherence 캐시는 현대 컴퓨터 아키텍처, 특히 성능에서 중요한 구성 요소입니다. 캐시는 메모리에 데이터 복사본을 유지 관리하므로 프로세서 코어의 데이터에 더 빨리 액세스할 수 있습니다. 일반적으로 프로세서는 여러 레벨의 캐시를 포함하며, 이는 그림 1과 같이 속도와 크기 면에서 다릅니다. 이 경우 캐시와 메인 메모리에 여러 개의 데이터 복사본이 존재할 수 있습니다. 한 코어가 로컬 캐시의 데이터를 수정하는 경우 다른 코어가 로컬 캐시의 오래된 데이터를 사용하지 않기 때문에 프로세서는 캐시 간의 데이터 일관성을 보장해야 합니다. 캐시 쓰기를 처리하는 데는 두 가지 일반적인 접근 방식이 있습니다: Write through: 캐시와 메모리를 즉시 write (시간이 오래 걸림) Write ba..
Deadlock프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태로 ‘교착 상태’라고도 한다. System model- CPU, files, I/O device 등의 리소스들은 R로 표현- 각 리소스 R은 인스턴스 W를 가짐(R이 CPU라면 W는 CPU 코어들)- Request , use, release Deadlock 발생조건1. Mutual exclusion – 하나의 리소스는 하나의 스레드만 사용할 수 있다.2. Hold and wait – 이미 하나의 리소스를 가지고 있고 추가적으로 다른 스레드의 리소스를 원할 때3. No preemption – 리소스를 한번 가져가면 작업을 수행하기 전까지는 리소스를 release하지 않는다.4. Circular wait – wait cy..
1. Bounded buffer problem Semaphore mutex는 버퍼 풀 접근에서 mutual exclusion이 적용되도록 하기 위해 사용 Semaphore full은 채워진 버퍼의 개수를 세줌(0개로 초기화) Semaphore empty는 빈 버퍼의 개수를 세줌(n개로 초기화) 2. Readers-writers problem Readers는 여러 명이 같이 읽을 수 있지만 writer는 한명 만 write할 수 있음 The first readers-writers problem: reader에게 우선권을 줌(writer가 starvation할 수 있음) Read_count: 실행중인 reader의 개수 Semaphore mutex: read_count가 mutual exclusion될 수 ..
Race condition 공유 데이터에 대한 엑세스가 제어되지 않았을 때 경쟁 상태(race condition)가 존재하며, 데이터 값이 손상될 수 있다. 실행결과는 엑세스가 수행되는 순서에 따라 달라진다. Critical section 각 프로세스는 critical section이라는 코드의 한 부분을 가지고 있다. 한 프로세스가 critical section에 접근했으면 다른 프로세스는 기다려야 한다. entry section: entry section에서 critical section에 접근하겠다고 요청, 허가되면 들어가고 아니면 entry section에서 기다려야함 exit section: 프로세스가 exit section으로 나오며 critical section을 빠져나왔다고 알리면 다른 프..
- Memory layout 프로세스는 프로그램을 메모리로 불러들여 실제로 실행시키고 있는 것을 의미한다. 프로세서의 현재 활동 상태는 프로세서 카운터의 값과 프로세서 레지스터의 내용으로 표시된다. 프로세서의 메모리 레이아웃은 일반적으로 여러 섹션으로 나뉜다. text section – 실행가능한 코드들(read only) data section – global variables(initialized, uninitialized) heap section – 프로그램 실행 시간동안 동적으로 할당되는 메모리 stack section – 함수 호출 시 임시 데이터 저장소(함수 매개변수, 반환 주소 및 로컬변수) text section과 data section의 사이즈는 고정되어 있고, 프로그램 실행 시간 동안 ..
Multiprogramming: CPU를 최대한 이용해서 여러 프로그램을 concurrently하게 실행 운영체제에 의해 Kernel level 스레드가 scheduled 됨 보통 CPU 처리(CPU burst)와 IO를 기다리는 것(I/O burst)이 번갈아 가면서 수행됨 CPU bound program: IO burst가 얼마 없어서 CPU Burst가 길고 끊김이 별로 없는 프로그램 IO bound program: IO burst가 많아서 CPU Burst가 짧고 여러 개인 프로그램 CPU scheduler: ready queue에 있는 프로세스를 골라 CPU에 돌림 Preemptive & Nonpreemptive Nonpreemptive scheduling: 동작하는 프로세스가 실행이 끝날 때까..
Memory Layout Text section: program code Data Section: (initialized and uninitialized) global variable Stack section: temporary data(function parameter, return address, local variable) Heap section: memory dynamically allocated during runtime Process state PCB 운영체제가 프로세서를 제어하기 위해 정보를 저장해 놓은 곳으로, 프로세스의 상태 정보를 저장하는 구조체이다. Process state: running, waiting etc Program counter: 다음 수행할 명령어의 위치 CPU regi..
Operating System 운영체제(Operating System, OS)는 컴퓨터 시스템에서 하드웨어와 소프트웨어 사이의 인터페이스 역할을 수행하는 시스템 소프트웨어이다. 운영체제는 컴퓨터 자원을 효율적으로 관리하고, 사용자 및 응용 프로그램에게 필요한 서비스를 제공하는 역할을 한다. User Programs Operating system Hardware Interrupt 인터럽트(interrupt)는 컴퓨터 시스템에서 발생하는 중단 신호를 말한다. 이는 운영체제나 하드웨어 디바이스가 프로세서의 실행을 일시적으로 중단시키고, 특정 이벤트에 대한 처리를 수행하도록 하는 메커니즘이다. 인터럽트가 발생하면 현재 실행 중인 작업이 일시적으로 중단되고, 해당 인터럽트를 처리하는 인터럽트 서비스 루틴(ISR)..