Some Terminologies Dynamic Loading Dynamic Linking Overlays Swapping ● 동적 로딩 (Dynamic Loading) 프로그램 전체를 메모리에 올리는 것이 아니라 필요할 때(해당 루틴이 불려질 때마다) 해당 루틴을 메모리에 올리는 것이다. 프로그램은 방어적으로 만들어지기 때문에 프로그램 전체가 균일하게 사용되는 게 아니다. 프로그램 중에서 상당 부분은 거의 사용되지 않는 오류 처리 루틴이 많으며 주로 사용되는 부분은 한정적이다. 좋은 프로그램일수록 오류 루틴이 많다. 그래서 미리 올려놓는 게 아니라 오류가 생기면 그때 메모리에 올리는 것과 같은 방식을 Dynamic Loading이라고 한다. 프로그램을 실행시키면 통째로 메모리에 올라가지 않고 당장 ..
● Logical Address vs Physical Address (논리적 주소 vs 물리적 주소) 프로그램이 시작되면 독자적인 주소 공간이 형성된다. 물리적인 메모리 내에서 3GB~4GB 주소 공간에는 운영체제 커널이 올라가 있고, 1GB~3GB 주소 공간에는 여러 사용자 프로그램들이 섞여서 올라가게 된다. 프로그램이 실행되려면 물리적인 메모리 어딘가로 올라가야 하고 그렇게 되면 주소가 바뀌게 된다. 프로그램이 물리적인 메모리에 어디로 올라갈지 주소를 결정하는 것을 주소 바인딩이라고 한다. Symbolic Address 프로그래머가 프로그램을 만들 때, 특정 변수에 값을 저장하고 그 변수를 메모리 몇 번지에 저장하라고 하지 않는다. 또한, 변수에 데이터를 저장한 후 함수를 호출할 때, 함수 이름을..
● 교착 상태 (Deadlock) 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태 위의 그림은 사거리가 막혀있는 상황이다. Deadlock이란 일련의 프로세스들이 서로가 가진 자원을 기다리면서 잠들어 있는 상태를 의미한다. 자원이라는 것은 하드웨어 자원일 수도 있고 소프트웨어 자원일 수도 있다. 예를 들어, 하드웨어 자원일 경우 tape drive 두 개가 있다고 했을 때, 하나의 tape drive에서 읽어 다른 tape drive에다가 copy를 하고 싶다고 하자. 두 프로세스가 각각 tape 두 개의 자원을 가져야 읽고 쓰는 행위를 할 텐데, 상대방이 가진 자원을 서로 계속 요구하게 되면 프로세스 진행이 되지 않는다. 소프트웨어 자원일 경우에는 프로세스 0 ..
2022.12.27 - [Operating System] - [운영체제] 프로세스 동기화 1 (Race Condition/경쟁 상태) [운영체제] 프로세스 동기화 1 (Race Condition/경쟁 상태) ● 데이터의 접근 데이터는 Storage Box에 저장되어 있고 그 데이터를 가지고 Execution Box 위치에서 연산 작업을 한 후 다시 원래 위치인 Storage Box에 저장한다. 이렇게 데이터를 읽고 연산/수정 후 결 rannnneey.tistory.com 2023.01.04 - [Operating System] - [운영체제] 프로세스 동기화 2 (Critical Section, Race condition) [운영체제] 프로세스 동기화 2 (Critical Section, Race con..
2022.12.27 - [Operating System] - [운영체제] 프로세스 동기화 1 (Race Condition/경쟁 상태) [운영체제] 프로세스 동기화 1 (Race Condition/경쟁 상태) ● 데이터의 접근 데이터는 Storage Box에 저장되어 있고 그 데이터를 가지고 Execution Box 위치에서 연산 작업을 한 후 다시 원래 위치인 Storage Box에 저장한다. 이렇게 데이터를 읽고 연산/수정 후 결 rannnneey.tistory.com 2023.01.04 - [Operating System] - [운영체제] 프로세스 동기화 2 (Critical Section, Race condition) [운영체제] 프로세스 동기화 2 (Critical Section, Race con..
Race condition : 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황 공유 데이터와 동시 접근은 데이터의 불일치 문제를 발생시킬 수 있다. 데이터의 최종 연산 결과는 마지막에 데이터를 다룬 프로세스에 따라 달라지는데, 일관성 유지를 위해서는 협력 프로세스 간의 실행 순서를 정해주는 메커니즘이 필요하다. Race condition을 막기 위해서 concurrent process는 동기화되어야 한다. 사용자 프로세스 P1 수행 중 timer interrupt가 발생해서 context switch가 일어나서 Process2가 CPU를 잡으면..? ● Critical Section (임계 영역) 공유 데이터인 X에 Process 1도 접근하려 하고 있고 Process 2도 접근하려고 하는 상..
● 데이터의 접근 데이터는 Storage Box에 저장되어 있고 그 데이터를 가지고 Execution Box 위치에서 연산 작업을 한 후 다시 원래 위치인 Storage Box에 저장한다. 이렇게 데이터를 읽고 연산/수정 후 결과를 다시 저장하는 과정에서 누가 먼저 읽어갔느냐에 따라 결과가 달라질 수 있다. ● Race Condition Storage Box를 공유하는 Execution Box가 여러 개 있을 경우 Race Condition의 가능성이 있다. Storage Box는 Memory Address Spage라고 하고 Execution Box는 CPU Process라고 생각해 보자. Race Condition가 발생하게 되면 운영체제 커널과 관련된 문제가 제일 크다. 프로세스가 운영체제에게 Sy..
이전 발행글 2022.12.26 - [Operating System] - [운영체제] CPU 스케줄링 1 (CPU burst Time, Scheduler & Dispatcher) [운영체제] CPU 스케줄링 1 (CPU burst Time, Scheduler & Dispatcher) ● CPU and I/O burst in program Excution 프로그램 실행이 되면 프로그램은 아래와 같은 Path를 실행한다. 프로세스는 CPU에서 기계어가 실행되는 상태와 I/O 작업을 하는 상태의 반복이다. 프로그램마다 다 rannnneey.tistory.com 2022.12.26 - [Operating System] - [운영체제] CPU 스케줄링 2 (FCFS, SJF, SRTF, Round Robin, M..