전체 글
-
[OS] 스레드와 시그널 및 스레드 취소운영체제 2020. 11. 27. 20:45
시그널 처리 시그널이란 OS 입장에서 프로세스에게 어떤 사건이 일어났음을 알리기 위한 수단 Synchronous signal : 어떤 사건을 처리하기 위해 발생(잘못된 메모리 접근, 0으로 나누기 등) Asynchronous signal : 임의 시점에 발생 (Ctrl-C, 타이머 만료 등) 이러한 시그널은 반드시 처리(handling) 되어야함 Default signal handler : 기본 처리 방법을 정의한 것으로 보통 프로세스의 종료로 이어짐 User-defined signal handler : 사용자가 직접 정의한 시그널 처리 방법 단일 스레드 프로세스는 프로세스 단위로 시그널이 처리됨 멀티 스레드 프로세스는 구현에 따라 여러 정책이 가능 모든 스레드에게 시그널 전달 몇몇 스레드에게만 전달 특..
-
[OS] Implicit Threading운영체제 2020. 11. 27. 20:43
Implicit Threading 프로그래머가 직접 스레드를 만들지 않고, 알아서 만들고 관리해주는 개념 3 가지 메인 방법이 존재 Thread pools OpenMP Grand Central Dispatch Thread pool 스레드를 매번 생성하는 것은 큰 오버헤드이므로 프로세스 실행 시에 미리 여러 개의 스레드를 만들어두고 스레드 풀에 저장해둠 요청을 받으면 서버는 풀로부터 스레드를 깨워서 요청을 전달 → 스레드 종료 시 다시 풀로 반환됨 (재활용) 서버가 요청을 받았을 때 스레드 풀에 가용한 스레드가 없다면 가용 스레드가 생길 때까지 대기함 이미 존재하는 스레드에 작업을 요청하는 것이 새로운 스레드를 생성하는 것보다 더 빨리 서비스 받을 수 있음 OpenMP #pragma omp parallel..
-
[OS] 유저스레드와 커널스레드운영체제 2020. 11. 27. 20:41
User Threads and Kernel Threads User thread : pthread나 java 라이브러리와 같이 스레드 라이브러리로 생성하고 관리되는 스레드 Kernel thread : 커널에서 제공하는 스레드 User thread 와 kernel thread 는 서로 연결되어있음 관계 Many-to-One Model User thread 가 많이 생성 되더라도 실제로 동작하는 것은 kernel thread 이므로 단일 스레드와 다를 것이 없음 One-to-One Model 현대 OS에서 대부분 채택하는 방식으로, 컴퓨팅 리소스가 커지면서 가능하게 됨 장점 : 매우 이상적이고, 빠름 단점 : 너무 많은 스레드를 운용하면 스레드 포화가 올 수 있음 Many-to-Many Model 운영체제가 ..
-
[OS] 멀티스레드 개념 (동시성 vs 병렬성)운영체제 2020. 11. 27. 20:40
Thread 스레드 : 프로세스 내의 제어 흐름 : CPU 이용의 기본 단위 동일 프로세스의 여러 스레드는 CODE, DATA 영역과 운영체제 자원(파일, 시그널 등)을 공유 하지만 Heap과 Stack 은 공유하지 않음 Multithreading 하나의 프로세스에서도 여러 개의 스레드를 통해 병렬적으로 작업을 처리할 수 있음 장점 Responsiveness : 응답성의 향상 Resource Sharing : 프로세스가 리소스를 공유하는 비용보다 훨씬 적은 비용으로 스레드 간의 리소스 공유가 가능 Economy : 프로세스 생성 비용보다 더 저렴한 비용으로 스레드 생성 가능 + context switching 또한 스레드 간의 스위칭이 더 저렴함 Scalability : multiprocessor 아키텍..
-
[OS] 커널 메모리 할당 방식(Buddy, Slab)운영체제 2020. 11. 27. 03:14
KernelMemory 사용자 모드의 프로세스가 추가적인 메모리를 요구하면 커널 페이지 프레임을 넘겨줌 커널 메모리의 특징 사용자 모드 프로세스와 달리 메모리 풀에서 할당하는 정책 사용 커널은 다양한 자료구조를 사용하지만 대충 필요한 메모리의 양이 정해져 있기에 이를 고려하고 적절히 할당됨 일반 프로세스의 페이지는 연속적일 필요가 없으나 커널은 하드웨어와 직접 상호작용하기에 물리적으로 연속적인 페이지 프레임을 할당 받음 Buddy System Allocator 2의 지수승으로 커널 프로세스에 메모리를 할당하는 방식 256 KB 는 물리적으로 연속적인 페이지임. 요청된 메모리 크기를 수용할 수 있는 최소 크기로 메모리를 쪼개어 할당하며 그러한 메모리 조각을 buddy 라고 부름 작업 종료 후 원본 budd..
-
[OS] 페이지 Thrashing, Working-Set, PFF운영체제 2020. 11. 27. 03:13
Thrashing Page fault 로 인한 페이지 로딩이 너무 빈번하게 요청되어서 실제 데이터를 가져온 뒤 활용도 못해보고 교체되는 문제 CPU 스케쥴러가 CPU utilization(활용률)을 최대화 시키는 방향으로만 스케쥴링되면 발생하는 문제임. → CPU utilization 이 떨어지면 프로세스를 추가할당 위 한계 구간에서 프로세스가 추가로 할당하면 당연히 Page fault 도 더 많이 발생하고, Thrashing 문제는 더 심해지는 악순환이 발생 따라서 CPU 스케쥴러를 구현할 때 page fault 횟수(frequency)도 고려해서 스케쥴링을 해줘야함 Demand paging 기법은 데이터간의 Locality 를 이용한 기법인데 이 locality 를 유지하기 위한 메모리 크기가 총 메..
-
[OS] 프로세스의 물리 메모리 할당운영체제 2020. 11. 27. 03:12
Allocation of Frames (물리 메모리의 할당) 컴퓨터 시스템에는 여러 개의 프로세스가 동시에 동작하므로 이를 효과적으로 분배해야함 → 각 프로세스에게 할당되는 최소/최대 프레임 수를 정해둠 그렇지 않으면 소수의 프로세스가 물리 메모리를 독점하는 현상이 발생 최소 프레임 수 작으면 Page fault 확률이 늘어나서 성능이 떨어짐. 프로세서의 Instruction set architecture 에 의해 결정 예를 들어 ADD x y z 라는 기본 명령어가 있다고 할 때 운이 없으면 ADD 명령어는 두 개의 페이지에 걸칠 수 있음 x, y, z 또한 각각 다른 페이지에 존재한다고 한다면 하나의 명령어를 처리하는데에 5개의 페이지에 접근해야함 이 때 최소 프레임 개수가 5개 미만이라면 해당 명령..