일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 파이썬
- 디자인 패턴
- redis
- mongoDB
- Spring
- 알고리즘
- JPA
- Proxy
- 운영체제
- JavaScript
- OS
- IT
- c언어
- react
- Kafka
- design pattern
- Algorithm
- MySQL
- Galera Cluster
- Data Structure
- MSA
- 자바
- 자료구조
- spring webflux
- 네트워크
- 백준
- Heap
- C
- Java
- 컴퓨터구조
- Today
- Total
목록OS (18)
시냅스
스레드 스케줄링 Thread Scheduling 스케줄 되는 대상은 프로세스가 아니라 커널 수준 스레드이다. 유저 스레드는 라이브러리에 의해 관리되고 커널은 유저 스레드의 존재를 알지 못한다. 경쟁 범위 Contention Scope 유저 스레드는 LWP 상에서 스케줄하기 때문에 동일한 프로세스에 속한 스레드들 사이에서 CPU 경쟁을 프로세스 경쟁 범위 (PCS)로 알려져 있다. LWP상에서 스케줄 한다고 해도 실행 중이라는 것을 의미하지 않는다. 실제 실행을 위해서는 LWP의 커널 스레드를 물리적인 CPU 코어로 스케줄 하는 것을 필요로 하기 때문 CPU 상에 어느 커널 스레드를 CPU 코어로 스케줄할 지 결정하기 위해서 시스템 경쟁 범위 (SCS)를 사용한다. 주석 : LWP가 경쟁하면 -> PSC,..
스케줄링 알고리즘 (Scheduling algorithm) 준비 큐에 있는 어느 프로세스에 CPU 코어를 할당할 것인지를 결정 CPU Scheduling 문제점의 Solution FCFS : First come, Fist Seerved SJF : Shortest Job First (SRTF : Shortest Remaning Time First) RR : Round Robin, Time Sharing Priority Based MLQ : Multi Level Queue MLFQ : Multi Level Feedback Queue FCFS 가장 간단, 먼저 요청 -> 먼저 할당 CPU burst time 에 따라서 Waiting time이 달라짐 Nonpreemptive Convoy Effect : 하나의..
CPU 스케줄링 CPU Scheduling 멀티프로그래밍의 목적 CPU 이용률 최대화 단일 코어라면, 빨간 박스의 상태에서 CPU는 I/O 요청이 완료될 때까지 유휴상태를 갖는다. -> 비효율적! 대기 시간 최소화 CPU - I/O 버스트 사이클 CPU Scheduler CPU가 유휴 상태가 될 때마다 Ready queue에 있는 프로세스를 하나 선택한다. 선택 절차는 CPU Scheduler에 의해 선택된다. Queue에 있는 레코드들은 일반적으로 PCB이다. 선택 방법 FIFO Queue Linked list, Binary list Priority Queue Preemptive(선점형) vs Nonpreemptive(비선점형) preemptive 조건에 의해서 스케쥴러가 context switch를 ..
멀티 쓰레딩 cpu를 넘나들 수 없음, 커널 support 없음 user thread : e.g. Java Kerner thread 코어에서 직접 쓰레딩을 할 수 있게 관리 한다. 운영체제가 직접 manage 다중 쓰레드 Multithreading models many to one : 가장 기본, 여러 유저 쓰레드 대 하나의 커널 쓰레드 one to one many to many 스레드 라이브러리 Threads Library 스레드 create manage하는 API 제공 POSIX Pthreads Windows thread Java thread : 운영체제에 따라 POSIX Pthread or Windows thread, 운영체제에 종속적이다. 암묵적 스레딩 implitcit threading 병행, ..
Thread cpu 점유의 기본 단위 구성 : tid, PC, 레지스터 집합, 스택 cpu 점유는 pid 내부의 tid가 한다. 스레드 간에는 코드, 데이터 파일을 공유한다. Multithreading 장점 응답성 : 봉쇄되거나 긴 작업이 수행돼도 쓰레드를 생성해 명령 수행 자원 공유 : code와 data, file을 공유해 사용 가능 경제성 : 프로세스를 여러개 만드는 것보다 경제적, context switching에 있어서도 마찬가지이다. 확장성 : 멀티 프로세스 아키텍쳐에서 병렬처리 가능 멀티코어, 멀티프로세싱 안에서의 멀티쓰레딩 병행성 양상 쓰레드가 여러개인 상황을 가정 싱글코어 : 시간에 따라 인터리빙(사이사이 끼어 넣는다 e.g. 시분할) 멀티코어 : 병렬적 수행 멀티코어에서 도전과제 iid..
POSIX 공유 메모리 : 메모리 - 사상 파일을 사용하여 구현된다, 메모리 - 사상 파일은 공유 메모리 특정 영역을 연관 시킨다. Mach 메세지 전달 대부분의 통신은 메세지로 수행된다. Port로 메세지를 주고 받는다. 포트는 크기가 정해져 있고 단방향이다. 양방향 통신의 경우, 메세지가 한 포트로 전송되고 응답이 별도의 응답 포트로 전송된다. 각 포트에는 여러 송신자가 있을 수 있지만 수신자는 오직 하나. 포트를 사용하여 태스크, 스레드, 메모리 및 프로세서와 같은 자원을 나타낸다. 각 포트에는 그 포트와 상호 작용하는데 필요한 자격을 식별하는 포트 권한이 필요 태스크가 생성되면 Task self 포트와 Notify 포트 생성 커널은 Task Self 포트에 대한 수신 권한이 있어 태스크가 커널에 ..
프로세스 간 통신 (Interprocess Communication) 독립적 : 프로세스 간 데이터 통신 X 협력적 프로세스 간 영향을 주거나 받음 프로세스 간 통신 기법 IPC 공유 메모리 시스템에서의 프로세스 간 통신 (IPC in Shared-Memoty Systems) 공유 메모리 영역을 통해 통신한다. 공유 메모리 공간을 사용하기 위해선 자신의 주소 공간에 포함시켜야 한다. 일반적으로 운영체제는 한 프로세스가 다른 프로세스의 메모리에 접근하는 것을 금지해야하지만 이 제약 조건을 제거한다. Producer - Consumer Problem 생사자는 정보를 제공하고 소비자는 소비하는 모델 Compler(생산) -> assembly code -> Assembler(소비) Browser(소비) Web ..
프로세스 : 실행 중인 프로그램 작업의 단위 필요한 자원 CPU time memory files I/O device 기본적으로 쓰레드 하나지만 여러개도 있음 프로세스의 메모리 레이아웃 text section : 실행 코드 data section : 전역 변수 heap section : 프로그램 실행 중 동적으로 할당되는 메모리 stack section : 함수를 호출할 때 임시 데이터 저장소(함수 매개변수, 복귀 주소, 지역 변수) 프로세스의 러닝 주기 new : 프로세스 생성 중 running : cpu에 명령어를 실행하는 상태 waiting : cpu 점유를 기다리는 상태 (I/O 관련, 신호의 수신) ready : cpu 점유 직전 대기 상태 teminated : 끝! 프로세스 관리법 : PCB(p..