스레드의 장점 1. 응답성 - 프로세스의 일부가 막혀도 실행될 수 있으며, 이는 유저 인터페이스에서 중요하다. - 예를 들어, 사용자 인터페이스 스레드와 백그라운드 작업 스레드를 분리하여 사용자가 프로그램의 응답성을 유지사면서 긴 작업을 처리할 수 있다. 2. 자원 공유 - 스레드는 프로세스의 자원을 공유하므로 메모리 공유나 message passing이 더 쉽다. - 스레드는 프로세스의 주소 공간을 공유하므로 변수 등의 데이터를 효율적으로 공유하여 작업을 처리할 수 있다. 3. 경제성 - 스레드는 프로세스 내에서 생성되는 것이므로 프로세스를 만드는 것보보다 메모리 및 자원 사용 측면에서 경제적이다. - context switching 보다 thread switching이 overhead가 더 적다. 4..
Mount마운트는 디스크와 같은 특정 물리적 장치를 디렉토리에 연결해주는 작업을 의미한다. 프로세스에서 파일 시스템을 사용하기 위해서는 반드시 파일 시스템이 마운트되어 있어야 하며, 마운트를 수행할 때는 저장장치의 이름과 마운트 포인트를 결정해야 한다. Root partition운영체제가 설치되는 루트 파티션(Root Partition)은 시스템이 부팅될 때 자동으로 마운트된다. 파일을 구분하는 방식으로는 단일 파일 시스템 내에서 사용되는 inode와 여러 파일 시스템에 걸쳐 사용되는 vnode가 있다. Virtual File System (VFS)여러 파티션에 서로 다른 file system이 올려져있다면, 파일에 대한 system call을 호출할 때마다 file system에 맞는 함수를 호..
File System Structure I/O는 block 단위로 전달되고 block은 하나 이상의 sector(512 or 4096 bytes)로 이루어져 있다. 일반적으로 block size는 4096 bytes이고 이건 일반적으로 사용하는 page size와도 일치한다. File system - File system은 데이터를 disk에 어떻게 저장할지를 결정함 - 사용자가 storage에 접근할 수 있는 interface를 제공, logical structure을 physical device에 어떻게 저장할지 결정 - 사용자가 데이터에 효율적이고 편하게 접근할 수 있게 함 위 그림은 파일 접근 과정을 나타내는 계층적 구조를 표현한 것이다. Logical file system 컴퓨터 시스템에서 파일..
File 저장장치에 저장되는 논리적 저장 단위 - 유저나 애플리케이션이 데이터를 저장하고 불러들이는 방법 - 비 휘발성 - 프로그램(source, object) 또는 데이터(numeric, character, binary) 파일의 속성들에는 다음과 같은 것들이 있다. 파일들에 대한 정보는 directory structure에 있고, directory structure은 disk 내에 존재한다. File operations file operation은 여러가지 있지만 그중에서 'Write'은 write pointer가 위치한 부분을 write하고 'Read'는 read pointer가 위치한 부분을 read한다. 'Reposition'은 seek이라 부르며, 파일 내의 위치를 바꾼다. 이를 통해 write..
Memory Protection메모리에서 각 각의 프로세스가 서로 간섭해서는 안되기 때문에 memory protection이 필요함process가 시작하는 메모리 주소를 base, 끝나는 주소를 base+limit로 정하고 이 정보는 각각 레지스터에 담겨있다. Address BindingCPU는 프로세스를 실행시킬 때 프로세스의 논리적 주소(logical address)를 참고한다. 이때 logical address만으로는 실제 메모리의 주소를 없으므로 logical memory와 실제 메모리의 주소인 physical memory를 연결시키는 작업이 필요하고 이를 address binding이라 한다. source program을 컴파일하면 machine instruction을 가지고 있는 objec..
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의 사이즈는 고정되어 있고, 프로그램 실행 시간 동안 ..