os 운영체제
-
OS: Semaphoreos 운영체제 2024. 5. 5. 19:44
Semaphore:세마포어의 작동 원리는 상호 배제 알고리즘(Mutual Exclusion Algorithm)에 기반한다. 구성: 세마포어 변수 S, P(wait) 연산, V(signal) 연산으로 구성되어 있다. 세마포어 변수 S는 P와 V라는 명령에 의해서만 접근할 수 있다. s를 수정하는 연산은 모두 원자성을 만족해야한다. P는 임계 구역에 들어가기 전에 수행되고, V는 임계 구역에서 나올 때 수행된다.이진형 세마포어(binary semaphore): 0 또는 1을 가진다. 즉, 1개의 공유 자원을 상호배제하며 이를 이용해 계수 세마포어를 구현할 수도 있다.계수형 세마포어(counting semaphore): 0과 양의 정수값을 가질 수 있따. 여러개의 공유 자원을 상호배제할 ..
-
OS: 프로세스 동기화(Process Synchronization)os 운영체제 2024. 4. 15. 11:39
더보기용어원자성(Atomicity) - 어떤 메소드(Method)를 2개 이상의 쓰레드가 동시에 호출하지 못하는 것을 말한다.동기화 - 스레드 간의 협력을 보장하기 위한 원자(indivisible)작업을 사용하는 것.Mutual exclusion - 한 번에 하나의 스레드만 Critical Section 사용, 다른 모든 스레드는 해당 활동에서 제외.Critical Section - 한 번에 하나의 스레드만 실행할 수 있는 코드(예: 공유 데이터를 수정하는 코드)lock - 다른 스레드가 작업을 수행할 수 없도록 하는 메커니즘: critical section에 들어가기 전에 잠금. critical section을 떠날 때 잠금 해제 잠긴 critical section에 들어가려는 스레드는..
-
os: 프로그램 실행 시 메모리의 구조os 운영체제 2024. 4. 14. 21:53
메모리 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 함. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요함. 따라서 OS는 프로그램에게 대표적으로 4가지 메모리 공간을 제공함. 코드(code) 영역 데이터(data) 영역 스택(stack) 영역 힙(heap) 영역 코드(텍스트) 영역 실행할 프로그램의 코드가 저장되는 영역 CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다. 데이터(data) 영역 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역입니다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다. 스택(stack) 영역 함수의 호출과 관계되는 지역 변수와 매..
-
OS: Thread(cooperating system)os 운영체제 2024. 4. 8. 23:34
Process를 보는 두가지 시야: ● 리소스 소유 단위 프로세스에는 프로그램 코드 및 데이터가 포함된 주소 공간이 있음. 프로세스에 파일이 열려 있거나 I/O 장치를 사용하는 경우. ● 스케줄링 단위 CPU 스케줄러는 한 번에 하나의 프로세스를 CPU로 전송. 프로세스와 연관된 것은 PC, SP 및 기타 레지스터의 값. (~1988) 두가지 단위를 묶을 필요가 없다 Process = 리소스 소유 단위 Thread = 스케줄링 단위 스레드(LWP): 프로세스 내의 단일 순차적 실행 스트림 쓰레드는 child를 생성/block 할 수 있음 동시에 실행 됨 (고유한 레지스터=>프로그램 카운터(PC), 스택&스택 포인터(SP) 보유) 동시성 vs 병렬성 더보기 2. Concurrency vs Paralleli..
-
OS: RPCos 운영체제 2024. 4. 8. 21:59
RPC(Remote Procedure Call): 일반적으로 프로세스는 자신의 주소공간 내의 함수만 호출, RPC는 다른 주소공간의 프로세스의 함수를 실행할 수 있음.(네트워크 사용) - Client-Server 간의 커뮤니케이션에 필요한 상세정보는 최대한 감춘다. (=> 언어나 환경에 구애를 받지 않는다! ) - Client와 Server는 각각 일반 메소드를 호출하는 것처럼 원격지의 프로시저를 호출할 수 있다. 과정 1. 클라이언트 프로시저가 클라이언트 스터브를 호출 2. 클라이언트 스터브는 매개변수들을 pack해서 kernel을 trap함 3. 커널이 원격 커널에 메시지 보냄 4. 원격 커널이 서버 스터브에 메시지를 줌 5. 서버 스터브가 매개 변수를 unpack하고 서버를 호출함 6. 서버가 프로..
-
OS: 프로세스, IPC, fork/execos 운영체제 2024. 4. 3. 21:51
출처 Process Scheduling: 어떤 프로세스에게 cpu를 할당할지 정함. 1. Long-Term Scheduler (장기 스케줄러 or Job Scheduler) 시작(디스크에 있는) 프로세스 중 어떤 프로세스를 Ready Queue로 보낼지를 결정하며, 프로세스에 메모리 및 각종 자원을 할당한다. 자주 발생하지는 않는다. 또 Degree of Multiprogramming(메모리에 몇 개의 프로세스가 존재하는지)를 제어한다. Time-sharing 시스템에서는 보통 Long-Term Scheduler가 존재하지 않고 무조건 Ready Queue로 올라가는 방식이다. 2. Short-Term Scheduler (단기 스케줄러 or CPU Scheduler) 어떤 프로세스를 다음에 실행시킬지를 ..
-
OS: 프로그램의 구조, 인터럽트, Syscall, 프로세스 실행 상태os 운영체제 2024. 3. 28. 18:58
프로그램의 구조: 프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소가 메모리에 올라가 있어야 함. 프로그램의 주소 영역: 코드 : 프로그램 함수들의 코드가 기계어 명령 형태로 변환되어 저장되는 부분 데이터 : 전역 변수등 프로그램이 사용하는 데이터는 저장하는 부분 스택 : 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 부분 인터럽트: 인터럽트 때문에 CPU를 빼앗긴 위치는 운영체제가 관리하는 PCB(프로세스 제어 블록)에 저장됨 인터럽트가 발생하면 PCB에 해당 프로그램의 수행 위치를 저장. 인터럽트 처리 후 PCB에 저장된 주소를 복원시켜 원래 하던 일을 재개. CPU는 PC가 가리키는 메모리 위치의 프로그램을 수행한다. CPU가 운영체제..
-
OS: 스풀, CISC, 데드락os 운영체제 2024. 3. 27. 21:08
스풀(Simultaneous Peripheral Operation On-Line): CPU와 IO가 독립적으로 동작하도록 함, I/O가 CPU보다 느림 -> 대기시간 발생 -> 이를 해결하기 위해 스풀러가 고안됨 스풀러는 디스크를 매우 커다란 버퍼로 사용함 (원래는 메인메모리를 버퍼로 사용) 다중 프로그래밍 환경에서 다수의 프로세스들이 서로 입출력 장치를 요구하거나 그 장치의 수가 제한 되어 있는 경우 이를 공유하기 위해 가상장치를 각 프로세스에게 제공해준다. CPU와 I/O가 혼합된 작업의 경우, I/O의 처리를 기다리지 않고 이를 가상장치를 통해 디스크에 넣어둔 다음, CPU가 다른 작업을 수행할 수 있게 한다 스풀링은 스풀을 적용하는 것 또는 스풀을 위해 마련된 저장공간을 채우는 동작을 뜻한다. ..