프로세스 Flashcards

1
Q

경쟁조건

A

[정의] 멀티프로세스 환경에서 공유 자원에 동시 접근시 타이밍과 순서에 따라 결과가 달라지는 일관성을 해칠 수 있는 상태
* 상호배제, 교착상태, 기아현상 발생 가능
[발생조건] 상호배제, 진행(임계 영역 진입 방해 금지), 한계대기(기아현상 방지)
[해결방안]
- SW 방식 : 세마포어, 모니터, 뮤텍스
- HW 방식 : Test & Set(임계영역 진입시 Lock), SWAP 명령(두 메모리 워드간 내용의 원자적 교환)
- 알고리즘 : 데터, 피터슨, 램포트 알고리즘

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

인터럽트

A

[정의] H/W,S/W의 IRQ 신호에 의해 현재 작업을 즉시 중단하고 요청된 작업 수행후 복귀하는 과정
[종류/발생요인] (전기외입 프슈)
1. H/W 인터럽트
- 외부 인터럽트 : 전원이상, 기계 착오, 외부 신호, 입/출력
- 내부 인터럽트 : 프로그램 검사 (divide by zero, overflow, underflow)
2. S/W 인터럽트
- 프로그램 검사 인터럽트 : 잘못된 명령, 보호된 메모리 접근 시도, Statck Overflow, 0 나누기
- SuperVisor Call : SVC(SuperVisor Call), 기억장치 할당/오퍼레이션 통신
* 인터럽트 처리우선 순위 : 전원 > 기계 > 외부 > 입/출 > 프로그램 > SVC
[처리과정]
1. 인터럽트 벡터
2. IRQ (Interrupt ReQuest) : 요청
3. IVT(Interrupt Vector Table) : 인터럽트 벡터 값
4. ISR (Interrupt Service Routine) : 인터럽트 금지 → 프로세스 상태 저장 → 인터럽트 처리 → 프로세스 상태 복귀→인터럽트 허용
[구현방식] SW적 구현 방식, HW적 구현 방식
[차별화] 다중 인터럽트 우선순위 부여 방식
- 직렬 방식(HW,우선순위 직렬 연결), 병렬 방식(HW, 가중치 부여), 폴링 방식(SW, 우선순위 높은 장치 선택)
* HW 방식은 고속처리는 가능하나 별도 HW 필요, SW방식은 반응시간이 느린 단점 존재

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

프로세스

A

[정의] 주기억장치에서 실행되는 프로그램으로 자원 공유 없이 PCB 유지 상태로 실행되어 운영체제가 관리하는 자원 할당 단위
[특징] PCB 이용, 문맥 교환 부하 발생, 운영 체제에 종속적
[유형] 운영체제 프로세스, 사용자 프로세스, 병행 프로세스, I/O bound 프로세스, CPU bound 프로세스
[프로세스 구성도] (코데힙스)
- 정적 할당 : Code(Text)(함수,제어문,상수), Data (최기화된 전역변수), BSS(초기화 안된 전역 변수)
- 동적 할당 : Heap (동적할당), Stack (지역 변수)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

상태전이 다이어그램

A

[정의] 프로세스가 상황과 조건에 따라 생성, 준비, 실행, 대기, 종료 상태로 변화되는 전이를 반복
[상태전이 발생 상황] Demand Paging, Swap In/Out, Disk I/O, Network I/O
[상태] (생준대실종)
- Dispatch : CPU 할당 (준비 → 실행), 문맥교환 발생
- Timer run out : CPU 할당 만료, Time Slice, 선점 (실행 → 준비), 문맥교환 발생
- Block : 즉시 실행 불가능 시스템 콜, 가용하지 않는 리소스 접근, 프로세스간 통신(IPC), I/O 작업 시작, 자원 요청 후 할당을 기다리는 전이 상태 (실행 → 대기), 문맥교환 발생
- Wake up : 조건 만족 ( 대기 → 준비)
- Swap In : 지연대기 → 대기 or 지연준비 → 준비
- Swap Out : 대기 → 지연대기 or 준비 → 지연준비
[프로세스 스케줄링]
- 장기(생성→준비), 중기 (중단된 준비/대기), 단기 스케줄링(준비, 실행,대기)
[고려사항] (S/W측면) 멀티 스레드, 병행처리 고도화, (H/W측면) NUMA(공유 캐시), 하이퍼스레딩
*Interrupt, Dispatch시 문맥교환, PCB기록등 부하 발생
[잦은 상태전이에 따른 Overhead 해결방안]
- 비선점 스케줄링 활용 : FCFS, SJF 비선점 스케줄링 통한 Time Runout 전이 부하 제거
- Context Switch 최소화 : Light Weight 프로세스 Thread 이용, 다중 프로세스 정도 낮춤

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

문맥교환

A

[리드] 병행처리 확보
[정의] 다른 프로세스와의 병행 처리위해 PCB에 작업 상태를 보관, 적재하는 하는 프로세스 전환 작업
[절차]
1. System Call, 인터럽트 발생
2. 커널 모드 전환 : 사용자 모드 -> 커널 모드
3. 현재 프로세스 상태 PCB에 저장 : Context Save
4. 다음 실행 프로세스 PCB에서 로드 : Context Resotre
5. 사용자 모드 전환 : 커널 모드 -> 사용자 모드
[문맥의 유형]
- 시스템 문맥 : 프로세스에 관한 자원 정보 (PCB 정보, PID, schedule, register, 계정정보)
- 메모리 문맥 : 프로세스에 할당된 메모리 정보 (Stack, Heap, Swap 공간, Text, Data)
- 하드웨어 문맥 : 문맥 교환시 실행 위치 정보 (실행 위치 정보, Thread구조, HW register)
[발생원인]
- Clock Interrupt, I/O Interrupt, System Call, Trap, Memory Fault, Time Slice(CPU 할당 시간 만료)
- (프로세스 전이도) Dispatch(준비→실행), I/O 작업 할당, System Call(실행→대기), Time Slice (실행→준비)
* 잦은 프로세스 상태전이로 인한 문맥교환은 오버헤드 발생 시스템 성능에 영향
[오버헤드 해결방안] 프로그램 다중화 수준 감소, 스레드 이용, 스택 포인터 사용(스택의 경우)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

PCB

A

[정의] 운영체제가 프로그램 실행을 위해 필요한 자료를 담고 있는 자료 구조
[특징] 문맥 교환에 이용, 인터럽트 처리, 자원 할당, 스케쥴링등 OS의 모든 모듈에서 수정 가능
[구성요소] (식상카레스계 입메)

<내부> (프로세스 자체 정보)
- PID : 식별자
- 프로세스 상태 : 생성, 준비, 실행, 대기, 중단
- 프로그램 카운터 : 다음 명령 주소 정보
- 레지스터 저장 영역 : 누산기
- 프로세스 스케쥴링 정보 : 우선 순위, 큐 포인터
- 계정 정보 : 프로세스 사용정보
<외부> (외부 자원 정보)
- 입출력 상태 정보 : 할당 입출력 장치
- 메모리 관리 정보 : 상한/하한 레지스터, 페이지 테이블 정보
</외부></내부>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

TCB

A

[정의] Thread 실행 동안 상태 정보 유지 관리하는 데이터구조
[구성] (IP상레스) 스레드 ID(식별자), 스레드 PC, 스레드 상태, 레지스터 스택, 스케쥴러

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

스레드

A

[리드] Lightweight Process
[정의] 명령어 독립 실행 가능한 제어흐름으로, 프로세스의 자원을 공유하고 Task 를 처리하는 CPU 사용 기본 단위
[특징] 자원공유, 동기화, 병렬성, 분할과 정복, 다중 스레드
[자원공유] Main Thread → Thread1,2 ↔ Resource
[유형]
- 생성 관점 : 사용자 레벨 스레드(커널스레드와 1:N 맵핑, 사용자 생성 (+)이식성, 오버헤드감소(-) 동시성 불가, 확장제약), 커널 레벨 스레드(1:1 맵핑, 커널/전역 데이터 공유, 커널에서 생성 (+) 병렬 실행, 규모 확장 (-)오버헤드, 이식성 저하), 하이브리드 스레드
- 작업 관점 : 단일 스레드, 멀티 스레드
[단일스레드와 멀티 스레드]
- 단일스레드 : 하나의 프로세스에 하나의 스레드만 포함 프로세스의 일부 기능만 수행 Lightweight Process
- 멀티스레드 : 여러 개의 스레드를 이용해 하나의 Task를 동시에 수행 Stack를 공유하는 스레드

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

IPC

A

[리드] 프로세스간 통신
[정의] 공유 메모리가 없는 독립된 프로세스 간 동기화 및 데이터 교환을 위한 상호 통신 기법
[필요성] 동기화 문제 해결, 프로세스간 데이터 교환
[통신모델]
1. 메시지 공유 모델(Shared Memory) : 응용 프로그램으로 구현, 구현 복잡, 고속/대량, 충돌 발생
2. 메시지 전달 모델(Message Passing) : 커널을 통한 메시지 교환, 구현 용이, 저속/소량, 오버헤드 발생
[통신방식] (직간버동)
- 직접(대칭 통신), 간접(송/수신 분리, 유연선 제공), 버퍼링(링크의 메시지 보유 용량), 동기화(데이터 수신 대기 동기/비동기, 세마포어)
[통신기법] (P세공메소)
- PIPE : PIPE기반 단방향 (부모/자식 프로세스간 통신에 사용) - 단방향, Named PIPE
- 세마포어 : 하나의 공유 자원을 접근, PV연산 (이진 세마포어, 계수형 세마포어)
- 공유 메모리 : Kernel 생성 메모리 (특정 메모리 영역 공유, 양방향)
- 메세지 큐 : 커널 내의 Message Queue 이용 (FIFO, LIFO 지원, 양방향 통신 가능)
- 소켓 : Socket기반 송수신 (원격에서 프로세스간 데이터 공유) - 양방향
- Memory Map : 파일을 프로세스 메모리에 일정 부분 매핑, 대량의 데이터 공유 (파일 + 메모리)
- Signal : 이벤트 알림, (SIGKILL, SIGINT, SIGSTOP)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

RPC

A

[정의] 상호 미리 정의된 규격에 의하여 원격 프로세스의 함수를 호출 가능하게 하는 프로세스간 통신 기술
* Client에서 Stub를 이용하여 원격지 함수 호출
[메커니즘]
1. IDL 서버호출 규약 : IDL 파일을 rpcgen 컴파일러로 Stub 코드 생성
2. Client/Server에 Stub 빌드 : 원시코드 형태로 빌드
3. Client에서 Stub 호출 : Stub 함수 호출
4. Stub에서 RPC : 데이터형을 XDR 형식으로 변환하여 RPC 호출 (Marshaling)
5. Server 수신함수 처리 및 반환 : 결과값을 XDR 변환하여 전달 (Unmarshaling)
6. Client 결과 수신 : 서버의 반환 값 회신
[차별화] RPC와 그 외 시스템 원격 호출 기법
- REST(HTTP 기반), gRPC(오픈소스 범용 RPC프레임워크 + HTTP/2), MQ(비동기식, 이벤트기반, 확장유리)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

동기화 기법

A

[필요성] 공유(Reader/Writer), 경합(Race Condition), Data 일관성 문제
[문제점] 교착상태, 기아현상, 문맥 교환
[해결방안]
- OS, 프로그래밍 : 임계영역, 세마포어, 뮤텍스, 모니터, 스핀락
- 알고리즘 : 데커 알고리즘, 피터슨 알고리즘, 램포트 베이커리
- HW방식 : Test & Set, Swap

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

상호배제

A

[리드] 멀티프로세스의 동시성 제어
[정의] 경쟁 조건을 방지하기 위해 특정 프로세스가 공유 자원을 사용하고 있을 경우 다른 모든 프로세스가 해당 공유 자원을 사용하지 못하도록 제어하는 기법
[상호배제 요구조건] 상호배제 조건, 진행 조건, 한계 대기 조건, 상대 속도 조건
[방안]

<HW>
- Compare and Swap : 기계를 비교, 단어 내용을 검사 수정
- Test and Set : 워드 단위 검사, 명령어 이용
- 인터럽트 사용 금지 : 공유 변수가 변경되는 동안 인터럽트 발생 제한
<SW>
- Semaphore : P연산, V연산 (OS레벨)
- 모니터링 : 베타 동기큐, 조건 동기큐
- Spin-Lock : Busy Waiting
- Timestamp Ordering : 시스템 타임스탬프 (시스템 시간 기준)
<알고리즘>
- 피터슨 : 진입 기회 양보
- 데커 : 의사표시(flag)와 차례(turn) 변수를 통한 순서 결정
- 램포트 베이커 : 여러개 프로세스(or 스레드) 처리 가능, 순서 지정
</알고리즘></SW></HW>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

피터슨

A

[정의] 임계 영역에 대한 차례(turn)를 상대 프로세스에게 먼저 통보한 후, 자신 차례가 되었을 때 임계 영역을 사용하는 알고리즘
[알고리즘]
1. 자신의 의사표시(flag) 설정 : flag[0] = true
2. 다른 프로세스에게 진입 기회 양보 : trun=0,1
3. 다른 프로세스가 진입하려하면 대기, 없의면 임계구역 사용
4. 자신 의사표시(flag) 해제 : flag[0] = false
* 피터슨 알고리즘은 데커 알고리즘 보다 간단한 상호배제 SW 알고리즘

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

데커

A

[정의] flag와 turn이라는 변수로 임계 영역에 들어갈 프로세스(혹은 스레드)를 결정하는 상호배제 방식
[알고리즘]
1. 자신의 의사표시(flag) 설정 : flag[0] = true
2. 다른 프로세스가 임계영역을 사용하지 않을 경우 임계 영역 진입
3. 임계 영역 완료 후 다른 프로세스에게 차례 설정(turn) : turn = 1
4. 자신 의사표시(flag) 해제 : flag[0] = false

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

램포트 베이커리

A

[정의] Boolean choosing, Int number 변수 기반 순서를 위한 번호를 부여 받고 낮은 번호 먼저 수행
[특징] 분산처리 환경에서 유용

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

임계 영역

A

[정의] 병렬컴퓨팅에서 둘 이상의 스레드가 동시에 접근해선 안되는 공유 자원에 대한 동기화 위해 사용되는 SW 프로그래밍 기법
[구현방법]
1. Win32API 함수 : CRITICAL_SECTION g_cs, ::EnterCriticalSection(&g_cs);, ::LeaveCriticalSection(&g_cs)
2. MFC 이용 : CCriticalSction g_CS, g_CS.Lock(), g_CS.Unlock();
3. Java 이용 : Synchronized 블럭 {임계 영역 }, Sysnchronized 옵션

17
Q

뮤텍스

A

[정의] Critical Section을 갖는 스레드들의 동기화 보장위한 Locking, Unlocking사용 동시성 제어 기법
[특징] 다중 스레드 환경에서 공유 자원에 대한 문제 해결
* 임계영역 진입시 locking, 나올때 unlocking 수행
* 뮤텍스는 이진 세마포어와 유사
[비교] 뮤텍스 vs 세마포어
- 동작원리 : 자원을 한 프로세스만 할당 / 사용자 자원 Count, 모든 자원 사용
- 연산기법 : locking, unlocking / P연산, V연산
- 특징 : 한시점, 한프로세스 실행 / Binary Counting
- 대상 : Thread 기준 / 프로세스 기준
* 다중프로세스 동기화 기법으로 모니터와 스핀락 기법도 존재