CS/OS
동기 VS 비동기, 블로킹 VS 논블로킹
동기(Synchronous) vs 비동기(Asynchronous)Synchronous작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작함Thread1이 작업을 시작시키고, Task1이 끝날때까지 기다렸다 Task2를 시작작업 요청을 했을 때 요청의 결과값(return)을 직접 받음요청의 결과값이 return값과 동일호출한 함수가 작업 완료를 신경 씀Asynchronous시작, 종료가 일치하지 않으며 끝나는 동시에 시작을 하지 않음Thread1이 작업을 시작 시키고, 완료를 기다리지 않고, Thread1은 다른 일을 처리할 수 있음작업 요청을 했을 때 요청의 결과값(return)을 간접적으로 받음요청의 결과값이 return값과 다를 수 있음해당 요청 작업은 별도의 스레드에서 실행하게 됨콜백을 ..
[Memory] segmentation
Segmentation이란? Segmentation은 Paging과 달리 프로세스가 할당 받은 메모리 공간을 논리적 의미 단위인 Segment로 나눠서 연속되지 않은 물리 메모리 공간에 할당될 수 있도록 하는 메모리 관리 기법이다. Paging 기법은 사전에 미리 메모리를 나누어 두는 기법이라고 한다면 Segementation은 프로세스가 할당 받은 메모리 공간 만큼 메모리를 나누어 주는 기법이라고 보면 된다. 즉, 프로세스가 필요로 하는 메모리 작업 공간 만큼의 크기를 제공한다. 맞춤형 이라고 보면 된다. Segmentation은 코드, 데이터, 힙, 스택 등의 기능 단위로 segment(단위)를 정의하는 경우가 많으며 주소 바인딩을 위해 모든 프로세스가 각각의 주소 변환을 위한 segment tabl..
[Memory] paging (메모리 관리 기법, 메모리 단편화)
페이징 설명에 필요한 용어 논리적 주소, Logical Address : 프로세스가 메모리에 적재되기 생성되는 독자적인 주소 공간이다. 논리적 주소는 각 프로세스마다 독립적으로 0번째 주소부터 할당이 된다. 물리적 주소, Physical Address : 실제로 메모리에 적재되는 위치 주소를 말한다. 주소 바인딩, Address Binding : CPU가 기계어 명령을 수행하기 위해 프로세스의 논리적 주소가 실제 물리적 메모리의 어느 위치에 매핑되는지 확인하는 과정을 말한다. Paging이란? 프로세스가 할당 받은 메모리 공간을 일정한 크기의 페이지 단위로 나눠 물리 메모리에서 연속되지 않는 서로 다른 위치에 저장하는 메모리 관리 방법이다. 먼저, 논리적 메모리 상으로는 붙어서 저장이 되어 있다고 하지..
[Process & Thread] 교착상태(Deadlock)
1. 교착 상태 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태, 둘 이상의 스레드가 다른 스레드가 점유하고 있는 자원을 서로 기다릴때 무한대기에 빠지는 상황입니다.스레드일수도 있고 프로세스일 수도 있습니다. 2. 교착상태의 원인 (4가지 모두 성립) 상호 배제 : 한 프로세스가 자원을 독점하고 있으며 다른 프로세스들은 접근 불가능 점유 대기 : 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태 비선점 : 다른 프로세스가 점유중인 프로세스의 자원을 강제로 선점 불가 순환 대기: 대기중인 프로세스들이 사이클을 이룸, 서로가 서로의 자원을 요구하는 상황 3. 해결방법 4가지 1) 무시 : 아무조치 안함 2) 예방 : 4가지중 하나가 성립되지 않도록 미리 예방. 비용이 커서 비추..
[Process & Thread] Multi Process, Multi Thread 동기화 (Mutex, Semaphore)
1. 임계영역 임계영역은 둘 이상의 프로세스나 쓰레드가 동시에 동일한 자원에 접근하게 되는 프로그램 코드 부분을 의미하는데 각 프로세스나 쓰레드가 임계구역에서 일을 수행하는 동안 다른 프로세스나 쓰레드가 그 임계영역에 들어갈 수 없어야 한다. 즉, 임계영역 내의 코드는 원자적 실행이 되야 하는 것이다. 이렇듯, 원자적으로 실행되기 위해 임계영역으로 들어갈 때 entry section을 통해 진입 허가를 요청하게 되고 허가 요청이 수락되면 임계영역을 실행하게 된다. 임계영역에서 수행이 끝나면 exit section으로 퇴출하게 된다. 임계영역의 원자성을 보장함으로써 프로세스나 쓰레드들이 동기화 되도록 할 수 있고 이러한 방법 중 대표적인 방법이 뮤텍스와 세마포어인 것이다. 2. 동기화 멀티 쓰레드인 경우 ..
[Process & Thread] 프로세스간 통신(IPC, 공유메모리, 메시지전달)
1. IPC 1) IPC ⭐️ Inter Process Communication 프로세스는 독립적인 주소 공간을 가지고 있어서 다른 프로세스와 데이터를 주고 받을 수 없는데 이런 문제를 해결하기 위한 기법 IPC를 통해 프로세스간 통신이 가능하게 만들어줌 IPC는 크게 공유 메모리 방식과 메시지 전달 방식으로 나눠짐 2. 공유 메모리 1) 공유 메모리 프로세스들이 주소 공간의 일부를 공유하고 공유된 메모리 영역에 읽기와 쓰기를 하면서 통신하는 방식 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당해줌 메모리는 스택-힙-데이터-코드영역으로 이루어져있지만 공유 메모리를 할당 받으면 스택-힙-데이터-공유메모리-코드 이렇게 메모리 공간에 공유 메모리 공간이 추가가 됨 2)..
[Process & Thread] 스레드, 멀티 스레드
1. 스레드 1) 스레드 하나의 프로세스 내에서 실행되는 동작의 단위 각 스레드는 프로세스의 스택 메모리를 제외한 나머지영역인 코드, 데이터, 힙 영역을 공유 프로세스 내에서 독립적인 기능을 수행하며 이는 독립적인 함수를 호출함을 의미하며 따라서 스택메모리가 별도로 필요 스택 메모리가 별도로 필요하다면 스레드 별로 실행되고 있는 명령어의 위치 또한 다르므로 PC 레지스터도 각각 필요 2) 독립적인 스택 메모리 함수를 호출하기 위해서 인자 전달, Return Address와 함수 내 지역변수 저장 등을 위한 독립적인 스택 메모리 공간 필요 프로세스로부터 Stack memory 영역은 독립적으로 할당받고, Code, Data, Heap 영역은 공유 3) PC Register 멀티 쓰레드에서는 각각의 쓰레드마..
[Process & Thread] 프로세스, 멀티 프로세스
1. 프로세스 1) 프로세스 프로그램이 메모리에 적재되어 운영체제로부터 CPU를 할당받아 실행되는 것을 프로세스라고 한다. 프로그램에 CPU에서 실행 되려면 메모리에 적재된 상태여야만 한다. 2) 프로세스의 구조 Code : 프로그램에 내장되어 있느 소스코드 들어가는 영역, 실행한 코드 저장, 정적 Data : 전역변수, static 변수 저장, BSS 영역과 Data 영역, 정적 Heap : 동적 메모리 저장, 런타임 시 크기 결정, 직접 할당, 해제, 동적 Stack : 지역변수, 매개변수, 함수 저장, 컴파일 시 크기가 결정, 동적 3) CPU 할당 받은 프로세스의 실행과정 Notion을 아직 실행하지 않은 상태이다. 프로그램 Notion을 더블 클릭하여 활성화 시킨다. 프로세스 Notion이 메모..