CS 45

운영체제

1. 프로세스와 쓰레드의 차이 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이다. 실행 중인 프로그램의 인스턴스로, 독립된 메모리 공간을 가지고, 다른 프로세스의 메모리에 직접 접근할 수 없다. (프로세스 간 통신 위해서는 IPC 필요) 반면 쓰레드는 프로세스 내에서 실행되는 작업의 단위로, 같은 프로세스의 다른 쓰레드와 메모리를 공유한다. (프로세스 간 통신보다 더 쉽고 빠르다.) 한 쓰레드에 문제가 생기면 같은 프로세스 내의 다른 쓰레드에도 영향을 줄 수 있다. 프로세스는 각각의 독립된 회사라고 생각할 수 있다. 각 회사는 자체 사무실, 직원, 자원을 가지고 있으며, 다른 회사의 내부에 직접 접근할 수 없다. 회사 간 협력을 위해서는 공식적인 의사소통 채널(이메일, 회의)이 필요하다.쓰레드는 ..

CS 2024.08.25

CS_운영체제_멀티프로세스, 스레드와 멀티 스레딩

| 프로세스 (Process) 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태   | 멀티 프로세스 하나의 애플리케이션을 여러 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것여러 프로세스가 동시에 실행되는 것을 말한다. 각 프로세스가 독립적으로 실행되며, 프로세스 간에 메모리를 공유하지 않는다. 각각의 프로세스는 별도의 주소 공간을 가지고 독립적으로 실행된다. | 멀티 프로세싱두 개 이상의 cpu 또는 코어가 동시에 여러 프로세스를 실행하는 것을 말한다. 멀티 프로세싱은 병렬 처리를 가능하게 하며, 성능 향상과 높은 처리량을 제공한다. 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 생겨도 다른 프로세스를 이용할 수 있으므로 신뢰성이 높다.    | IPC ..

CS 2024.06.30

CS_운영체제_교착상태

| 락 (Lock)여러 스레드나 프로세스가 공유 자원에 동시 접근하지 못하도록 제어하는 매커니즘이다.락을 사용하면 임계 영역을 보호하여 데이터의 무결성을 유지할 수 있다.  상호 배제를 보장하는 락인 뮤텍스,   자원의 접근을 제어하는 세마포어,   바쁜 대기 상태를 유지하는 스핀락  | 교착상태 (Deadlock)둘 이상의 프로세스가 서로 가진 자원을 기다리면서 무한정 대기하는 상태를 말한다. 즉, 각 프로세스가 다른 프로세스가 점유하고 있는 자원을 요청하며 대기하므로, 아무런 작업도 처리되지 않는 상태다.  예시프로세스 A가 자원 1을 가지고 있고, 자원 2를 기다리는 중이다. 동시에 프로세스 B는 자원 2를 가지고 있고, 자원 1을 기다리는 상황이다. 이 경우, 두 프로세스 모두 무한정 대기하게 된..

CS 2024.06.30

CS_동기화(Synchronization)_스핀락, 뮤텍스, 세마포어

데이터 접근과 동기화데이터 접근은 운영체제에서 프로그램이나 프로세스가 파일, 데이터베이스, 메모리 등에 저장된 데이터를 읽고 쓰는 과정을 의미한다. race condition(경쟁 조건)은 여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때, 타임이이나 접근 순서에 따라 결과가 달라질 수 있는 상황을 말한다.동기화는 여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것을 말한다.  동기화 없이 동시 접근이 이루어지면 데이터 불일치, 충돌, 경합 등이 발생할 수 있다.    | 상호배제 (Mutual Exclusion)임계 영역(critical section) : 공유 데이터의 일관성을 보장하기 위해 하나의 프로세스/스레드만 진입해서 실행 가능한 영역을 말한다. 여기서 하나의 프로..

CS 2024.06.30

CS_운영체제_Paging: Smaller Table

Paging: Smaller Table이란?Paging: Smaller Table은 프로세스가 필요한 페이지 수가 TLB의 용량을 초과하는 경우에도 효율적으로 메모리를 관리하기 위한 기술이다. 페이지 테이블을 더욱 효율적으로 관리하여 메모리 공간을 절약하고 성능을 향상시키는 다양한 방법을 포함한다. 이 방법은 특히 대규모 주소 공간을 사용하는 시스템에서 중요한 역할을 한다.Paging: Smaller Table에 대한 비유페이지 테이블을 대형 도서관의 도서 목록이라고 생각해보자. 만약 도서관이 너무 커서 단일 목록으로 관리하기 어렵다면, 도서 목록을 여러 작은 목록으로 나누는 방식을 사용할 수 있다. 대형 도서관: 전체 페이지 테이블작은 목록: 더 작은 페이지 테이블 또는 다중 레벨 페이지 테이블도서관 ..

CS 2024.06.25

CS_운영체제_TLB

MMU란?메모리 관리 유닛(MMU, Memory Management Unit)은 CPU의 구성 요소로, 가상 주소를 물리 주소로 변환하고 메모리 보호를 제공하는 역할을 한다.주소 변환이란?주소 변환(Address Translation)은 가상 주소를 물리 주소로 변환하는 과정이다. 이 과정은 주로 페이지 테이블을 참조하여 수행된다.TLB의 등장 배경페이지 테이블은 가상 메모리 시스템에서 주소 변환을 가능하게 하지만, 매번 페이지 테이블을 참조하는 것은 시간과 자원을 소모한다. 특히, 프로세스가 많은 페이지를 사용하는 경우, 페이지 테이블 조회는 큰 성능 저하를 초래할 수 있다. TLB는 이러한 문제를 해결하기 위해 도입되었으며, 페이지 테이블의 일부를 고속 캐시에 저장하여 자주 접근하는 페이지를 빠르게 ..

CS 2024.06.25

CS_운영체제_세그먼테이션, 페이징

물리 메모리에는 소프트웨어가 올라간다.이 메모리를 잘라서 cpu가 연산해야 하므로 1차 메모리에 올린다.로딩해야하는데 프로그램마다 크기가 제각각이기 때문에 효율적으로 관리하지 않으면 메모리 낭비가 발생할 수 있다.따라서 메모리 관리가 필요하다. 연속 메모리 할당 기법프로그램들이 실행될 때 필요한 메모리를 연속된 블록으로 할당하는 기법이다. 단편화 (fragmentation)프로그램이 프로세스화 되어 실행되면 각각을 연속된 공간에 할당해주거나,일정 고정 단위 페이지로 나누어 할당할 수 있다. 두 방식 모두 메모리에 빈 공간이 생기며, 이를 단편화(fragmentation)라고 한다.  외부 단편화: 프로그램이 할당되진 않았지만 크기가 작아서 프로그램을 올릴 수 없는 영역내부 단편화: 분할 크기보다 작은 프..

CS 2024.06.23

CS_운영체제_가상메모리 요구 페이징과 페이지 폴트

가상 메모리가상 메모리는 논리적으로 4GB의 연속된 메모리 공간을 제공하며,실제 물리 메모리와는 독립적으로 동작한다.이 메모리 공간은 운영체제가 관리하며 각 프로세스가 자신의 공간을 가진다.    페이지와 프레임, 오프셋- 페이지 (Page) : 가상 메모리는 일정한 크기의 블록으로 나뉘며, 이를 페이지라고 한다. windows에서는 기본적으로 4KB 크기의 페이지를 기본적으로 사용한다.  - 프레임 (Frame) : 물리 메모리 역시 페이지와 동일한 크기로 나뉘며, 이를 프레임이라고 한다.  - 오프셋 (Offset) : 절대적인 기준이 되는 페이지 번호와 상대적인 기준이 되는 오프셋이 있다. 오프셋은 해당 페이지 내에서의 위치를 의미한다.   페이지 테이블페이지 테이블은 가상 메모리의 페이지와 물리 ..

CS 2024.06.23

CS_운영체제_PCB & Context Switching

PCB란?운영체제는 컴퓨터 시스템에서 여러 프로세스를 관리해야한다.프로세스 제어 블록 (PCB)는 운영체제가 각 프로세스에 대해 유지하는 데이터 구조로,각 프로세스는 고유한 PCB를 가지며 현재 상태와 관련된 모든 정보를 저장한다. PCB는 커널 영역에 생성되며,프로세스가 생성될 때 할당되고, 프로세스가 종료될 때까지 유지된다. PCB에 저장되는 정보1. 프로세스 상태 (Process State): 프로세스의 현재 상태. ex) 준비(Ready), 실행(Running), 대기(Waiting) 상태 등 2. 프로세스 우선순위 (Scheduling Information): 프로세스의 우선순위, 스케줄링 큐 포인터 등 스케줄링과 관련된 정보3. 프로그램 카운터 (Program Counter, PC): 다음에 ..

CS 2024.06.18

CS_운영체제_주소 변환(Address Translation)

주소 변환 (Address Translation)주소 변환은 가상 주소를 물리적 주소로 변환하는 과정을 말한다. 이는 메모리 가상화를 통해 운영체제가 메모리를 효율적으로 관리하고 보호할 수 있도록 하는 핵심 개념이다. 하드웨어와 운영체제가 협력하여 이 과정을 수행한다. 이 과정은 프로세스 보호, 메모리 효율성, 보안 등의 이유로 매우 중요하다. 메모리 가상화의 필요성메모리 가상화는 다음과 같은 이유로 필요하다:프로세스 보호: 각 프로세스가 독립적인 주소 공간을 가지므로, 프로세스 간의 메모리 충돌을 방지한다. 이는 프로세스가 다른 프로세스의 메모리 영역에 접근하는 것을 방지하여 시스템의 안정성을 높인다.메모리 효율성: 실제 물리적 메모리보다 큰 가상 메모리 공간을 제공하여 메모리 사용을 최적화한다. 이는..

CS 2024.06.18