운영체제(Operating system)에서 주로 다루는 관련용어를 요약한 문서입니다.
주요 개념
*프로세스(Process) : 실행중인 프로그램을 의미. 운영체제와 상호작용함. 스레드가 모여있는 컨테이너.
*프로세스 ID (PID) : 각각의 프로세스들을 구분하는 고유 식별자
*프로세스 오버레이(Process overlay) : 현재 실행중인 프로세스 주소 공간에 새로운 응용프로그램을 적재해 실행 시키는 방법.
*스레드(Thread) : 하나의 프로세스 내에서 실행되는 실행, 스케줄링의 단위. 스레드가 모이면, 프로세스가 됨.
*멀티스레드(Multi-thread) : 하나의 프로세스 내에서 여러개의 스레드가 동시에 실행되는것. 멀티스레드는 각각의 스레드의 작업에 영향을 주지 않고 동시에 작업을 할 수 있음.
*스레드 동기화 : 공유데이터에 접근하는 스레드가 충돌이 없도록 상호협력하는것. 공유데이터에 대한 다수의 스레드 접근으로, 공유데이터가 훼손되는걸 막기위해 만든 해결책.
1. 운영체제 : 컴퓨터 사용자와, 컴퓨터 하드웨어 사이의 중계역할을 해주며, 프로그램의 실행을 관리, 제어하는 시스템 소프트웨어이다. 운영체제는 컴퓨터 자체가 아니며, 실체가 있는 소프트웨어로, 컴퓨터가 켜질 때 가장 먼저 메모리에 적재되어 실행되며, 이후 모든 프로그램의 실행을 제어하고, 사용자 요청을 처리해주는 컴퓨터 자원을 독점적으로 관리하는 특별한 소프트웨어이다.
2. 폰노이만 프로그래밍 내장방식 : CPU와 메모리, 소프트웨어와 하드웨어를 분리했다는 것에 의미가있는 프로그래밍 방식으로, 실행 할 프로그램을 메모리에 담아 CPU가 실행하는 방식이다.
3. 일괄처리(배치) 시스템(Batch system) : batch 운영체제는, 자동으로 테이프 저장장치에 대기중인 프로그램을 한 번에 하나씩 적재하고 실행하는 시스템 유형이다.
4. 다중 프로그래밍 시스템 : 여러 프로그램들을 메모리에 올려놓고, CPU가 한 프로그램을 실행하다 입출력이 발생하면, 입출력이 완료될 때 까지 다른 프로그램을 실행하는 방식으로, CPU의 유휴시간(노는시간)을 줄이는 기법이다.
> 배치 일괄처리 시스템과 다중 프로그래밍 시스템은, 컴퓨터간의 즉각적인 대응이 불가능하다는 단점이 있음.
5. 시 분할 시스템 : 여러 프로세스가 CPU 사용시간을 분할해 나누어쓰는 기법으로, 컴퓨터가 대화식으로 바뀜에 따라, 배치 일괄처리 시스템과, 다중 프로그래밍 시스템은 컴퓨터간의 즉각적인 대응이 불가능한 점을 개선하기 위해 만들어진 기법.
6. 메모리 계층 구조 : 컴퓨터 시스템의 메모리를 계층적으로 구성하여 성능과 비용을 균형적으로 조절하는 방법. 캐시메모리, 주기억장치, 보조기억장치로 이루어져있음.
7. 명령어 : CPU에서 실행될 수 있는 기계어 명령어. 운영체제도 마찬가지로, CPU가 실행할 수 있는 명령어를 발생시켜 시스템 동작을 제어함.
8. 레지스터 : CPU 내부에 존재하며, 데이터나 명령어를 일시적으로 저장하는 기억장치. CPU 고속 연산을 위해 적은 용량으로 많은 개수을 필요로함.
9. 프로그램 카운터 : CPU 내부 레지스터중 하나. 다음에 실행 될 명령어 주소를 저장하는 역할. 운영체제는, 이 프로그램 카운터를 통해 다음에 실행 될 프로세스를 결정함.
10. 명령어 사이클 : CPU에서 명령어를 실행하는 단계적 프로세스.
11. 프로세스 4대공간
- 코드 영역 : 실행 할 프로그램의 코드가 저장되는 영역, 프로그램의 명령어가 저장됨.
- 데이터 영역 : 프로그램에서 사용하는 전역 변수, 정적 변수가 저장되는 공간.
*전역변수 : 프로그램 전체에서 접근이 가능한 변수로, 프로그램이 시작될 떄 초기화되며 프로그램이 종료될 때 까지 유지됨. 프로그램 전체에서 동일한 값이 유지되어야 할 때 사용됨.
- 스택 영역 : 함수 호출시 생성되는 지역변수, 매개변수가 저장되는 공간. 함수의 호출과 반환시 필요한 정보를 저장하기 위해 사용됨.
- 힙 영역 : 동적으로 할당된 메모리가 저장되는 영역. 프로그램 실행 중 필요한 메모리를 동적으로 할당함 > 사용후 반드시 반환해야함.
12. 컨텍스트 스위칭 : 멀티태스킹을 구현하기 위한 기술 중 하나. CPU가 실행하는 프로세스를 바꾸기 위해, 이전 프로세스의 상태를 저장하고 새로운 프로세스의 상태를 불러오는 과정으로, 스레드와 프로세스간의 전환이 이루어짐.
- 컨텍스트 스위칭 오버헤드 : CPU가 현재 실행중인 프로세스(스레드)를 중지하고, 새로운 프로세스(스레드)를 실행하는것으로, 현재 실행중인 프로세스(스레드)의 상태를 저장하고, 새로 실행할 프로세스(스레드)의 상태를 복원(불러오는)하는것.
- 스레드 컨텍스트 스위칭 : 현재 실행중인 스레드를 중단시키고, 다른 스레드에게 CPU를 할당.
- 디스패처 : 컨텍스트 스위칭을 실행하는 커널 코드. 스케줄러에 의해 선택된 스레드를 CPU가 실행하게 하는 기법으로, 커널<->사용자 간의 전환이 이루어짐.
13. 커널 : 하드웨어와 응용프로그램 사이를 연결하는 인터페이스. 시스템 자원을 관리하고, 응용프로그램 실행을 제어함.
- 커널 레벨 스레드 : 응용프로그램이 시스템 호출을 통해 커널레벨 스레드 생성 > 커널에 의해 스케줄됨
- 사용자 레벨 스레드 : 응용프로그램이 라이브러리 함수 호출을 통해 사용자 레벨 스레드 생성 > 스레드 라이브러리에 의해 스케줄됨
14. 장치관리자 : 컴퓨터 시스템장치를 제어하는 소프트웨어. 운영체제의 일부로 제공되며 시스템 시작시 자동으로 로드됨.
15. 인터럽트 : CPU가 프로그램을 실행하고 있을 때, 입출력 요청과 같은 다른 이벤트가 발생하여 처리할 작업이 있는 경우, 실행중인 작업을 일시정지하고, 해당 이벤트를 우선 처리하는것으로, 시스템 성능 최적화 및 효율을 높일 수 있음.
- 인터럽트 서비스 루틴 : 인터럽트를 처리하는 명령어의 집함으로, 일반적으로 장치관리자 내에 포함되어있음. 커널이 적재된 메모리 영역에 있는 코드임.
16. 동적 할당 : 프로그램 실행 중에 메모리를 할당하는 방식. 프로그램이 실행될 때 운영체제가 프로그램이 필요로하는 메모리 만큼 동적으로 할당함.
17. 함수 호출 : 프로그래밍 언어에서, 함수를 호출하고 반환하는 과정. 스택(Stack)을 관리하는 기능을 제공함.
18 .시스템 호출 : 운영체제의 서비스를 받기 위해 호출하는 인터페이스. 프로세스가 운영체제의 서비스를 받기위해 필요로함.
19. 논리적 주소 : 프로세스가 실제로 참조하는 주소. 프로세스가 직접적으로 접근할 수 있는 가상메모리
20. 물리적 주소 : 실제 메모리에 데이터가 저장되는 물리적 위치. CPU가 직접 접근할 수 있는 주소.
21. 프로세스 테이블 : 현재 실행중인 모든 프로세스에대한 정보를 유지하는 데이터 구조.
- PID : 각각의 프로세스를 구별하는 고유 식별자
- 상태 : 현재 프로세스가 어떤 상태인지 나타냄 (실행중, 일시정지, 종료됨, 재개됨 등)
- 우선순위 : 스케줄링 알고리즘에서 실행 우선순위를 결정하기 위한 값.
- 레지스터 상태 : CPU 내부 레지스터에 저장된 프로세스 정보.
- 입출력 상태 : 프로세스가 사용하는 입출력장치에 관한 정보.
22. 프로세스 제어 블록(PCB) : 각각의 프로세스에 대한 정보를 담고있는 자료구조. 프로세스에 대한 모든 정보를 저장하며, 프로세스를 추적, 제어하는데 사용됨.
23. 프로세스 생명주기 : Ready < > Running > Blocked > Ready
- Running 중간에 입출력 발생시, Blocked상태가 되며, 할당 받은 시간 이내 작업이 안끝나면 다시 Ready상태로 돌아가는 주기.
24. 프로세스 상태 전이 : 실행중인 프로세스가 다양한 상태를 거치며 시스템 자원을 사용하는 과정을 말함.
25. 유휴상태(Idle) : CPU가 아무런 작업을 하지 않고 대기하는 상태.
26. 부모-자식 프로세스 : 부모프로세스가 자식프로세스를 생성하고, 자식프로세스는 부모프로세스에게서 권한, 자원을 상속받아 사용 및 실행됨.
27. 좀비 프로세스 : 부모프로세스가 아직 종료코드를 읽지 않은 자식 프로세스를 말함.
28. 고아 프로세스 : 부모프로세스가 먼저 종료되버린 자식 프로세스를 발함.
29. CPU Bound Job(CPU집중프로세스) : 대부분의 시간을 연산작업을 하는데 보내는 프로세스. CPU속도가 성능을 좌우함.
30. I/O Bound Job : 대부분의 시간을 입/출력 작업에 시간을 보내는 프로세스. I/O 장치의 시스템 속도가 성능을 좌우함.
31. 스레드 제어블록(TCB) : 각 스레드마다 하나씩 존재하며, 운영체제가 각 스레드를 관리하기위해 유지하는 정보의 집합.
32. 작업 스케줄링 : 일괄처리시스템(Batch system)에서 대기중이 배치 작업중 메모리에 적재할 작업을 결정하는것.
33. CPU 스케줄링 : 프로세스, 스레드중 하나를 선택해 CPU에 할당하는 것. 오늘날은 스레드중 하나를 선택하는 스레드 스케줄링임.
34. CPU burst : 프로그램 실행중 CPU의 연산 작업이 연속적으로 발생하는 상황.
35. I/O busrt : 프로그램 실행 중 I/O장치의 입출력이 이루어지는 상황.
36. Time-slice : 스케줄된 스레드에게 한 번에 할당하는 CPU 시간.
- 커널이 스케줄을 단행하는 주기 시간이라고 함.
37. 비선점 방식 : 프로세스가 CPU를 점유하고 있는동안 다른 프로세스가 스레드가 CPU를 강제로 뺏을 수 없는 방식. CPU를 점유중인 프로세스(스레드)가 CPU를 내놓기 전 까지 계속 실행됨.
38. 선점 방식 : 프로세스가 CPU를 점유하고 있는동안, 다른 프로세스(스레드)가 CPU를 강제로 뺏어올 수 있는 방식. 선점방식 운영체제는, 우선순위, 시간할당량에 따라 프로세스(스레드)를 선택함.
39. 기아 : 스레드가 스케줄링되지못하고 ,계속 준비리스트에 있는 것.
40. 임계구역 : 공유데이터에 접근하는 프로그램 코드들.
- 임계구역 진입 코드 : 상호배제를 위해 필요한 코드. 임계구역이 실행중인 스레드가 있는지 검사함.
41. 상호배제 : 임계구역이 오직 한 스레드만 베타적, 독점적으로 사용되도록 하는 기술.
42. 원자코드 : 일련의 명령문을 모두 실행하거나, 전혀 실행하지 않은 단 하나의 단위로 실행되는 코드로, 실행 중 다른 프로세스나 스레드의 상호작용에 대해 분리되어 안전하게 실행됨.
43. 뮤택스 : 잠금/열림 중 하나의 상태를 갖는 Lock변수를 이용해 한 스레드만 임계구역에 진입시키고, 다른 스레드는 큐에 대기시키는 것. (Sleep-waiting lock 기법)
44. 스핀락 : 뮤택스와 유사하지만, lock을 소유한 스레드만 자원을 베타적으로 사용할 수 있음. (동기화 기법, Busy waiting lock 기법)
45. 세마포어 : 멀티 스레드 사이에서의 공유자원에 대한 동시접근을 막는 기법. (동기화 기법)
- Binary semaphore(이진세마포어) : 카운터 값이 0,1인 세마포어
- Counter semaphore(카운터 세마포어) : 카운터 값이 이진세마포어보다 큰 세마포어.
46. 뮤택스와 세마포어의 차이점
- 뮤택스는 소유가능하며, 뮤택스를 소유한 스레드만 뮤택스를 해제할 수 있다.
- 세마포어는 소유가 불가능하며, 세마포어를 소유하지 않은 스레드도 세마포어 해제가 가능하다.
47. 우선순위
-우선순위 역전 : 스레드 동기화로인해 높은 순위의 스레드가 낮은 순위의 스레드보다 늦게 스케줄링 되는 현상
-우선순위 올림 : 스레드가 공유자원을 소유하게 될 때, 스레드 우선순위를 미리 정해진 높은 우선순위로 옮기는 것으로 우선순위가 선점되지않고, 빨리 실행되도록 유도할 수 있음.
-우선순위 상속 : 낮은순위의 스레드가 공유데이터를 소유하고, 높은 우선순위의 스레드가 공유데이터를 요청할 때, 공유데이터를 소유한 낮은 우선순위의 스레드를 공유데이터를 요청한 높은 우선순위의 스레드보다 우선순위를 높게 설정하여 빨리 실행시키는 것.
'Study > 운영체제(OS)' 카테고리의 다른 글
운영체제 관련 용어 정리. (160) | 2023.04.19 |
---|---|
02. 운영체제의 태동 (1) | 2023.04.18 |
01. 운영체제의 시작과 발전. (1) | 2023.04.18 |