일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로세스 제어 블록
- Multi-level Queue
- Reentrant
- The DIning Philosopher Problem
- 스레드 동기화
- 인터락 함수
- 문맥 교환
- 커널 모드
- 유저 모드의 동기화
- 블로킹 논블로킹
- 임계 구역
- Process Control Block
- Stack영역
- 교착 상태
- 은행원 알고리즘
- Activity
- 커널 모드의 동기화
- 유저 모드
- Non-Preemptive
- 스레드
- The Banker's Algorithm
- Light Weight Process
- 방금 그 곡
- 뮤텍스(Mutex)
- 모니터(Monitor)
- 프로세스 상태 전이도
- 프로세스
- 경량 프로세스
- Heap영역
- 동기 비동기
목록전체 글 (36)
Blog For Me
스레드(Thread)란? 프로세스 내에서 실행되는 프로그램 코드의 흐름을 의미하며, 프로세스 내 주소 공간이나 자원 공유 가능하다. 한 개의 프로세스 내에서는 반드시 하나 이상의 스레드가 존재한다. 스레드는 프로세스 내의 Code, Data, Heap 영역을 다른 스레드와 공유하고 Stack 영역은 따로 할당받는다. 여러 스레드는 한 프로세스 내의 Code, Data, Heap 영역을 공유하지만, 프로세스 간에는 서로 메모리에 접근할 수 없다. 스레드는 별도의 Register와 Stack을 가지고, 그 외의 다른 영역은 공유한다. 한 스레드가 프로세스 자원을 변경하면 다른 스레드도 그 변경 결과를 가져올 수 있다. 스레드가 필요한 이유 여러개의 작업 단위로 구성된 프로그램에서 요청을 동시에 처리하기 위함..
출처: Operating System Concepts 10th Ed, Abraham Silberschatz, Peter Bare Galvin, Greg Gagne Context Switching(문맥 교환)이란? 유튜브로 동영상을 보면서 채팅을 치는 경우가 많다. 사용자 입장에서는 동시에 일어나는 것처럼 보이지만 사실 CPU는 한번에 하나의 프로세스만 처리 가능하다. 각 프로세스는 일 처리 위해 CPU 자원을 짧은 시간 내에 할당받아 일을 처리한다. 이처럼 여러 프로세스를 처리해야 하는 상황에서 현재 진행중인 Task의 상태를 PCB에 저장하고, 다음에 진쟁할 Task 상태 값을 읽어 적용하는 과정을 문맥 교환(Context Switching)이라 한다. Context Switching의 과정 Task의..
PCB는 무엇인가? PCB는 프로세스 제어 블록(Process Control Block)의 줄임말로, 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓을 수 있는 일종의 자료 구조이다. 어떤 작업을 처리하는 와중에 갑자기 급한 이벤트가 발생했을 때, 기존에 작업하던 프로세스를 어딘가에 저장을 해놓아야 하는데, 그러한 기능을 하는 곳이 PCB이다. Context Switching이 발생할 때 기존에 실행하던 프로세스를 PCB에 저장 후 중단시키고 새로 실행하는 프로세스의 PCB를 불러온다. PCB 저장내용 Process State: 프로세스의 각 상태를 저장한다. 생성, 준비, 실행, 대기, 종료 중 해당 상태 정보를 저장한다. Process Number: 프로세스의 아이디 정보이다. Process co..
프로세스는 실행의 흐름에 따라 상태가 바뀐다. 일반적으로 프로그램의 실행 흐름은 5가지의 상태를 지닌다. 프로세스의 5가지 상태 생성(New): 프로세스 생성 상태 준비(Ready): 프로세스가 CPU에 할당받기를 기다리는 상태 실행(Running): 프로세스가 CPU에 할당받아서 실행 중인 상태 대기(Waiting): 프로세스가 입출력이나 이벤트를 기다리는 상태 종료(Terminated): 프로세스가 실행일 끝내고 종료한 상태 프로세스의 상태 전이 admitted: 프로세스 생성을 승인받음 dispatch: 준비 상태에 있는 여러 프로세스들 중 하나가 스케줄러에 의해 실행되는 상태 Interrupt: Timeout, 입출력 등이 발생하여 현재 실행 중인 프로세스를 준비 상태로 전환하고, 해당 작업을 먼..
1. Text 영역 실행 가능한 코드가 들어있다. CPU에서는 이 영역에서 명령어를 하나씩 가져와 처리한다. 2. Data 영역 전역 변수, 정적 변수가 저장된다. 이 변수들은 프로그램 시작 시 할당되어 프로그램이 종료될때 소멸된다. 3. Heap 영역 프로그램 실행 중에 동적으로 할당할 수 있는 영역이다. Heap 영역은 런타임에 결정되며, 프로그래머가 필요할 때마다 사용하는 영역이다. stack 영역과는 반대로 낮은 주소에서 높은 주소 순으로 할당한다. Java에서는 객체가 Heap 영역에 생성되고 GC(Garbage Collection)에 의해 수거된다. Heap 영역에서의 할당은 요청되는 양, 현재 메모리 상황 등 다양한 요소를 고려해야 하므로 더 많은 CPU Instruction이 필요하여 St..
문제 링크: https://www.acmicpc.net/problem/10816 입력 첫째 줄: 상근이가 가지고 있는 숫자 카드의 개수 N 둘째 줄: 각 숫자 카드에 적혀있는 정수(-10,000,000보다 크거나 같고 10,000,000보다 작거나 같음) 셋째 줄: 숫자 M (1 n; vector card(n); for(int i=0;i>card[i]; } sort(card.begin(), card.end()); cin>>m; for(int i=0;i>num; auto start = lower_bound(card.begin(), card.end(), num); auto end = upper_bound(card.begin(), card.end(), num); cout