본문 바로가기

Computer Science/Operating System14

[Operating System] I/O Systems I/O HardwareI/O 디바이스는 다음으로 구성되어 있다.- Port : 레지스터로 구성된 연결점- Bus : 데이터 이동 통로- Controller : 포트, 버스 또는 장치를 작동할 수 있는 전자장치 집합체 CPU는 Memory-Mapped I/O를 통해 컨트롤러에 명령어 또는 데이터를 전달한다.- Memory-Mapped I/O : 디바이스 제어 레지스터가 CPU 주소 공간에 매핑되어 있어, CPU가 일반적으로 데이터를 읽거나 Instruction을 수행하듯 I/O를 요청을 수행하는 것 I/O Port는 네 가지 레지스터로 구성되어 있다.- Status register : 디바이스의 상태를 나타내는 레지스터- Control register : 디바이스의 모드를 변경하거나 명령어를 시작하려는 호.. 2024. 9. 1.
[Operating System] Mass Storage Management (대용량 저장장치 관리) Physical Disk Structure- 디스크는 회전하는 금속 Platter와 이를 읽는 Header들로 구성되어 있다.- 디스크를 읽기 위해서 다음과 같은 정보들이 필요한데, 이를 CHS 주소 체계라고 한다.1. Cylinder #2. Surface(Header) #3. Sector #4. Total transfer time = Seek time + Rotational delay + Transfer time5. Memory address   디스크에 있는 데이터는 운영체제에 의해 logical block들로 구성된 1차원 배열로 관리된다. 그 배열은 디스크의 Sector와 맵핑되어 있다. 디스크 컨트롤러는 그 배열의 주소를 CHS 주소로 변경한 다음 디스크를 읽는다.  Disk Scheduling.. 2024. 8. 29.
[Operating System] File System (2) (파일 시스템) Contiguous Allocation- 각각의 파일은 디스크 공간에서 연속적으로 블럭을 가지고 있다.- 디스크에서 파일의 시작위치와 파일의 길이만 있으면 된다.- 저장 공간을 동적으로 할당하기 때문에 External Fragmentation이 많이 생길 수 있다.- File 생성 시 얼마나 큰 hole을 배당할 것인가도 고려해야 하며, File의 크기를 키우면 Internal Fragmentation이 발생할 수 있다.- 파일이 연속적으로 디스크에 저장되어있기 때문에 디스크의 헤더가 많이 움직일 필요가 없어 I/O가 빠르게 수행될 수 있다. 특히, 동영상이나 음성파일과 같은 실시간으로 읽어야 하는 파일 수행에 효과적이다.Linked Allocation- 파일 데이터를 불연속적으로 흩뿌려 저장하고 그것들.. 2024. 8. 27.
[Operating System] File System (1) (파일 시스템) File ConceptFile : 데이터 또는 프로그램을 포함하는 연속적인 논리 주소 공간 File Attribute (File Metadata)- Name : 사람이 읽을 수 있는 형태로 유지된 유일한 정보- Type : 여러 유형을 제공하는 시스템을 위해 필요- Location : 파일이 존재하는 장치와 그 장치 내의 위치에 대한 포인터- Size : 파일의 현재 크기(바이트, 워드 혹은 블록들로 나타낸다.)- Protection : 누가 읽기, 쓰기, 실행 등을 할 수 있는가를 제어- Time, date, and user identification : 생성, 최근 변경, 최근 사용 등을 유지하고, 이들 자료는 보호, 보안 및 사용자 감시를 위해 사용된다. File Operation- Create :.. 2024. 8. 25.
[Operating System] Virtual Memory (2) (가상 메모리) Global vs. Local ReplacementGlobal Replacement : 프로세스가 교체할 프레임을 다른 프로세스에 속한 프레임을 포함한 모든 프레임을 대상으로 찾는 경우이다. 이를 구현한 알고리즘의 한 가지 문제점은 프로세스의 메모리에 있는 페이지 집합이 해당 프로세스의 페이징 동작 뿐만 아니라 다른 프로세스의 페이징 동작에도 영향을 받는 다는 것이다.Local Replacement : 각 프로세스가 자기에게 할당된 프레임 중에서만 교체될 Victim 프레임을 선택할 수 있는 경우이다. 이를 구현한 알고리즘에서는 Global Replacement에서 발생하는 문제가 발생하지는 않지만 잘 안쓰는 페이지 프레임이 있더라도 그것을 그대로 낭비할 수가 있다.-> 일반적으로 Global Repla.. 2024. 8. 21.
[Operating System] Virtual Memory (1) (가상 메모리) Virtual Memory- 메모리에 프로세스의 모든 부분을 한꺼번에 다 로드하면, 메모리 용량이 큰 프로그램을 하나만 실행해도 메모리 용량이 부족해진다.- 따라서 프로세스의 전 부분을 한꺼번에 로드하는 것이 아닌, 실행 중에 필요한 부분만을 메모리에 로드하고 필요 없는 부분은 메모리에서 제외하기 위한 방법이 가상 메모리 기법이다.- 가상 메모리 기법으로 여러 프로세스가 메모리 주소 공간을 공유할 수 있고, 프로세스 생성을 효율적으로 수행할 수 있다. 가상 메모리 공간은 물리 메모리 공간보다 훨씬 넓다. Demand Paging- 페이지가 필요할 때만 디스크에서 메모리로 로드한다. 이는 적은 수의 I/O가 발생하게 하고, 크지 않으며 응답이 빠른 메모리를 가질 수 있게 하며, 여러 프로세스의 메모리 주소.. 2024. 8. 20.
[Operating System] Memory Management (2) (메모리 관리) Hierarchical Paging계층적 페이징은 페이지 테이블을 페이징 하는 방식이다.32비트 주소공간의 크기 : 2^32 bytes페이지 사이즈 : 2^12 bytes페이지의 개수(페이지 테이블 엔트리의 개수) : 2^20 개 이 때 각 페이지 테이블 엔트리는 2^2bytes 주소 이므로,페이지 테이블의 크기 : 2^22 bytes이 페이지 테이블 또한 페이징 기법으로 메모리에 저장해야한다. 페이지 테이블의 크기 : 2^22 bytes페이지 사이즈 : 2^12 bytes페이지 테이블의 페이지의 개수(외부 페이지 테이블 엔트리의 개수) : 2^10 개   따라서 이 32비트 논리 주소에서 p1은 외부 페이지 테이블 엔트리 번호, p2는 내부 페이지 테이블 엔트리의 번호, d는 그 페이지 내부에서의 오프.. 2024. 8. 16.
[Operating System] Memory Management (1) (메모리 관리) Binding of Instructions and Data to Memory- Compile time Binding : 프로세스가 메모리 내에 들어갈 위치를 컴파일 타임에 미리 알 수 있다면 컴파일러는 절대 주소를 포함하는 절대 코드를 생성할 수 있다. 그러나 만일 이 위치가 변경되어야 한다면 이 코드는 다시 컴파일 되어야 한다. - Load time Binding : 프로세스가 메모리 내 어디로 올라오게 될지를 컴파일 시점에 알지 못하면 컴파일러는 일단 이진 코드를 상대 주소를 포함하는 재배치 가능 코드(Relocatable code)로 만들어야 한다. 이렇게 만들어진 재배치 가능 코드는 시작 주소가 변경되면 아무 때나 사용자 코드를 다시 적재하기만 하면 된다. - Execution time Bindi.. 2024. 8. 12.
[Operating System] Deadlocks (교착 상태) Deadlock  두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태로 무한히 다음 자원을 기다리게 되는 상태를 말한다. 데드락의 발생 조건다음 4가지가 모두 성립해야 데드락이 발생한다. 1. Mutual Exclusion : 자원은 한번에 한 프로세스만 사용할 수 있다.2. No Preemption : 다른 프로세스에 할당된 자원은 사용이 끝날 때 까지 강제로 빼앗을 수 없다.3. Hold and Wait : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재해야 한다.4. Circular Wait : 프로세스의 집합에서 순환 형태로 자원을 대기하고 있어야 한다. Resource-All.. 2024. 8. 7.
[Operating System] Process Synchronization (프로세스 동기화) Race condition  공유된 데이터에 대한 경쟁적인 접근은 데이터의 불일치를 초래할 수 있다. 여러 개의 프로세스들이 동일한 데이터에 접근해서 데이터를 변경하려는 상황을 Race condition이라고 한다. Race condition으로 인해 최종적으로 데이터의 값은 잘못된 값이 될 가능성이 있다. 이러한 Race condition을 방지하기 위해 경쟁하는 프로세스들은 동기화 되어야 한다.  이러한 상황에는 P1이 연산을 먼저 수행하고, P2가 그 다음 연산을 수행한다면 X가 처음과 동일하게 2로 유지될 것이라고 생각할 수 있지만, instruction이 interleaving된다면 P1의 연산 도중 P2가 연산을 동시에 수행하여 결과를 P1보다 늦게 X에 저장한다면 X의 최종 값은 1이 될 것.. 2024. 7. 29.
[Operating System] CPU Scheduling (CPU 스케줄링) CPU SchedulingCPU 자원을 현재 메인메모리에 올라온 프로세스들 중에 어느 것에 줄 것인지 결정하는 것. Histogram of CPU-burst Times- I/O bound job  CPU를 길게 쓰지 않지만 그 빈도가 매우 높다. ex) 키보드 타이핑 - CPU bound job  CPU를 길게 쓰고 그 빈도가 낮다. ex) 오래걸리는 계산과 같은 작업 CPU SchedulerCPU 스케줄링은 다음과 같은 상황에 발생한다.1. 프로세스의 상태가 Running -> Waiting로 바뀔 때 ex) I/O 요청2. 프로세스의 상태가 Running -> Ready로 바뀔 때 ex) Timerunout3. 프로세스의 상태가 Waiting -> Ready로 바뀔 때 ex) I/O 종료 인터럽트4... 2024. 7. 17.
[Operating System] Processes and Threads (프로세스와 스레드) Process프로세스란 실행중인 프로그램으로, 정확히 말하자면 프로그램이 실행되는 데 필요한 모든 것들을 저장하는 자료구조라고 할 수 있다. Process Address Space   프로세스는 주소공간에서 stack, heap, data, text 으로 4가지 section으로 나타난다.Stack : Function Call(parameters, return address, local variables, etc..)과 Context Switch(register value including PC, Stack Pointer)을 위해 사용 되는 데이터를 관리하는 영역Heap : 동적 메모리 할당으로 저장한 데이터를 관리하는 영역Data : Static, Global Variable을 관리하는 영역Text :.. 2024. 7. 12.
[Operating System] System Call (시스템 콜) System CallOS 커널과 유저 프로그램간의 인터페이스를 제공하는 메커니즘. 유저 프로그램이 OS의 서비스를 요청할 때 시스템 콜을 사용한다. 시스템 콜은 하드웨어 자원에 직접 접근하거나 중요한 작업을 수행하기 위해 필요하다.[ex) 파일 I/O, 프로세스 제어, 메모리 관리, 네트워크 통신 등] System Call Implementation- 각 시스템 콜에는 고유 번호가 할당되어 있고, 시스템 콜 인터페이스는 이 번호에 따라 인덱싱된 테이블을 유지한다.- 시스템 콜 인터페이스는 OS 커널에서 의도된 시스템 콜을 호출하고, 시스템 콜의 상태와 반환 값을 반환한다.- 유저 프로그램의 시스템 콜 Caller는 시스템 콜이 어떻게 구현되었는지 알 필요가 없다. API를 준수하고 OS가 어떤 결과를 낼.. 2024. 7. 7.
[Operating System] Interrupt (인터럽트) Interrupt프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것.지금 수행중인 일보다 더 중요한 일이 발생하면, 그 일을 먼저 처리하고 나서 하던 일을 계속 해야한다.Interrupt handler특정 I/O 디바이스를 서비스 하기 위한 프로그램. 인터럽트가 발생하면 인터럽트 핸들러로 이동하여 인터럽트를 처리하고 유저 프로그램으로 복귀한다.  Interrupt Cycle인스트럭션을 수행하며 인터럽트가 왔는지 확인하고, 인터럽트가 있다면 인터럽트 핸들러로 가서 인터럽트를 처리하고 온다. Simple Interrupt Processing- 하드웨어1. 특정 디바이스가 인터럽트를 발생시킨다.2. CP.. 2024. 6. 29.