Study/운영체제(OS)

운영체제 관련 용어 정리.

728x90
반응형

운영체제관련 중요 용어를 20자 내외로 정리한 내용.


운영체제 (Operating System) : 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중계역할을 하면서, 프로그램의 실행을 관리 및 제어하는 시스템 소프트웨어이다. 운영체제는, 컴퓨터 자체가 아니며 실체가 있는 소프트웨어로써, 컴퓨터가 켜질 때 처음으로 메모리에 적재되어 나머지 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 컴퓨터의 자원을 독점적으로 관하는 특별한 소프트웨어이다.

 

폰 노이만형 프로그램 내장방식 : CPU와 메모리, 소프트웨어와 하드웨어를 분리했다는 의미가 있는 프로그래밍 방식으로, 실행할 프로그램을 메모리에 담고 CPU가 프로그램을 실행하는 방식으로, 고정 프로그래밍 방식에비해 획기적인 변화를 추구했으며, 프로그램은 입력 장치를 통해 메모리에 적재하고 펀치카드에 구멍을 뚫어 프로그램을 작성해 카드 리더기로 프로그램을 메모리에 읽어들이는 방식이다.

 

배치(일괄)처리 시스템(Batch System) : 개발자와 관리자를 구분하여, 개발자는 펀치카드를 입력 데크에 두고 결과를 기다리고, 자동으로 테이프 장치에 대기 중인 프로그램을 한 번에 하나씩 적재하고 실행하는 시스템 유형이다.

 

다중프로그래밍 시스템(Multi programming system) : 여러 프로그램을 메모리에 올려놓고, CPU가 한 프로그램을 실행하다 I/O가 발생하면, 입출력이 완료될 때 까지 CPU가 메모리에 적재된 다른 프로그램을 실행하는 식으로 CPU가 노는 시간을 줄이는 방법이다.

 

시분할 시스템(Time sharing system) : 컴퓨터 환경이 대화식으로 바뀌면서, 기존의 배치처리와 다중 프로그래밍 시스템 방식은 컴퓨터와 사용자 간의 즉각적인 대응이 가능하지 않다는 문제점이 발견되어, 여러개의 프로세스가 CPU 사용 시간을 분할해 나눠 쓰는 개념을 적용한 방법이다.

 


메모리 계층구조(Memory nierarchy structure) : 컴퓨터 시스템의 메모리를 계층적으로 구성하여, 성능과 비용을 균형적으로 조절하는 방법으로, 캐시메모리, 주기억장치, 보조기억장치로 이루어져있다.

 

명령어(Instruction) : CPU에서 실행될 수 있는 기계어 명령어이다. 운영체제도 마찬가지로 CPU가 실행 할 수 있는 명려어를 발생시켜, 시스템 동작을 제어한다.

 

레지스터(register) : CPU 내부에 존재하며, 데이터나 명령어를 일시적으로 저장하는 기억장치로, CPU의 연산을 고속으로 수행하기 위해 적은 용량으로 많은 개수가 필요하다.

 

프로그램 카운터(PC, Program Counter) : CPU 내부 레지스터 중 하나로, 다음에 실행될 명령어의 주소를 저장하는 역할을 하며, 운영체제는 프로그램 카운터를 활용하여 다음에 실행될 프로세스를 결정하고, 다음 프로세스 실행을 위해 프로그램 카운터를 새로운 프로세스 첫번째 명령어 주소로 업데이트 한다. 이런 과정을 통해 CPU는 여러 개의 프로세스를 동시에 실행할 수 있게 된다.

 

명령어 사이클(IC,Instructure Cycle) : CPU에서 명령어를 실행하는 단계적 프로세스를 의미한다.

 


프로세스 4대 공간

 1. 코드(Code) 영역 : 실행할 프로그램의 코드가 저장되는 영역으로, 프로그램의 명령어가 저장되며, 실행중인 프로그램 코드가 들어가게된다.

 

 2. 데이터(Data) 영역 : 전역 변수와 정적(static) 변수가 저장되는 영역으로, 프로그램에서 사용되는 전역 변수, 정적 변수 등의 데이터가 들어가게된다.

 

 3. 스택(Stack) 영역 : 함수 호출시 생성되는 지역 변수와 매개변수가 저장되는 영역으로, 함수의 호출과 반환시 필요한 정보를 저장하기 위해 사영된다.

 

 4. 힙(Heap)영역 : 동적으로 할당된 메모리가 저장되는 영역으로, 프로그램 실행중에 필요한 메모리를 동적으로 할당하기 위해 사용됨. 힙 영역에서 할당된 메모리는 사용 후 반드시 해제해야한다.

 


 

컨택스트 스위칭(Context Switching) : 멀티태스킹을 구현하기 위한 기술 중 하나로, CPU가 실행하는 프로세스를 바꾸기 위해 이전 프로세스의 상태를 저장하고, 새로운 프로세스의 상태를 불러오는 과정. 이를 통해 여러개의 프로세스가 동시에 실행될 수 있다. 즉, 스레드와 프로세스간의 전환이 이루어진다.

 

커널(kernel) : 하드웨어와 응용 프로그램 사이를 연결해주는 인터페이스로, 커널은 시스템 자원(CPU, 메모리, 디스크, 네트워크 인터페이스 등)을 관리하고, 응용프로그램의 실행을 제어한다.

 

장치 관리자(device driver) : 컴퓨터시스템의 장치들을 제어하는 소프트웨어로, 운영체제에서 하드웨어를 제어하기 위해서는 해당 장치에 대한 드라이버가 필요한데, 이 드라이버가 바로 장치관리자이다. 장치 관리자는 일반적으로 운영체제의 일부로 제공되며, 시스템 시작시 자동으로 로드된다.

 

인터럽트(interrupt) : CPU가 프로그램을 실행하고 있을 때 입출력 요청 등 다른 이벤트가 발생하여 처리할 작업이 있는 경우, 실행 중인 작업을 일시적으로 중단하고 해당 이벤트를 우선 처리하는 것으로, 시스템 성능최적화와 효율성을 높일 수 있다.

 

인터럽트 서비스 루틴(Interrupt service routine) : 인터럽트를 처리하는 명령어의 집합으로, 일반적으로 장치 드라이버 내에 있다. 커널이 적재된 메모리 영역에 있는 코드이다.

 


 

전역 변수 : 프로그램 전체에서 접근 가능한 변수를 의미한다. 전역 변수는 프로그램이 시작될 때 초기화되며, 프로그램이 종료될 때까지 유지된다. 전역 변수는 프로그램 전체에서 동일한 값이 유지되어야 하는 경우에 사용된다.

 

동적 할당(Dynamic allocation) : 프로그램이 실행 중에 필요한 메모리를 할당하는 방법으로, 프로그램이 실행되면 운영체제는 프로그램이 필요로하는 메모리 크기를 파악하고, 필요한 만큼의 메모리를 동적으로 할당한다.

 

함수 호출(Function call) : 프로그래밍 언어에서 함수를 호출하고 반환하는 과정을 의미한다. 스택을 관리하는 기능을 제공하며, 시스템 콜(System call)과 같은 중요한 기능들도 함수 호출을 이용하여 구현됨.

 

시스템 호출(System call) : 운영체제의 서비스를 받기 위해 호출하는 인터페이스로, 운영체제의 기능을 호출할 때는 운영체제에서 제공하는 특별한 인터페이스를 사용해야한다. 시스템 호출은 프로세스가 운영체제의 서비스를 이용하기 위해 필요한 방법이며, 운영체제 서비스를 이용하기 위해 사용된다.

 

프로세스(Process) : 실행중인 프로그램을 의미하며, 운영체제는 프로세스를 생성, 중지, 일시정지, 재개 등의 작업을 수행할 수 있다. 즉, 프로세스와 운영체제가 상호작용할 수 있다.

 

프로세스 ID(PID, Process IDentification) : 각각의 프로세스를 식별하는 고유한 식별자를 의미한다.

 

논리적 주소(Logical address) : 프로세스가 실제로 참조하는 주소. 프로세스가 직접적으로 접근할 수 있는 가상 메모리 주소이다.

 

물리적 주소(Physical address) : 실제 메모리에서 데이터가 저장되는 물리적 위치. CPU가 직접 접근할 수 있는 주소이며, 이를 통해 메모리에서 데이터를 읽고 쓸 수 있다. 즉, 운영체제는 물리적 주소를 할당하고 관리한다.

 

프로세스 테이블(Process table) : 현재 실행중인 모든 프로세스에 대한 정보를 유지하는 데이터 구조. 운영체제는 프로세스 상태를 감시하고, 스케줄링을 수행하여 관리한다.

 > 1. 프로세스 ID (PID) : 각 프로세스를 구별하기 위한 고유 식별자.

 > 2. 상태 (State) : 현재 프로세스가 어떤 상태에 있는지 나타냄. ( 실행 중, 대기 중, 종료됨 등 )

 > 3. 우선순위 (Priority) : 스케줄링 알고리즘에서 프로세스의 실행 우선순위를 결정하기 위한 값.

 > 4. 레지스터 상태 (Register State) : CPU 레지스터에 저장된 프로세스 관련 정보.

 > 5. 입출력 상태 (I/O State) : 프로세스가 사용하는 입출력 장치와 관련된 정보.

 

프로세스 제어블록(PCB, Process Control Block) : 각각의 프로세스에 대한 정보를 담고 있는 자료구조. 운영체제 커널의 메모리 공간에 저장되며, 프로세스의 상태, PID, PC, 레지스터값, 스케줄링정보, 메모리 할당 정보, I/O 상태 등 프로세스에 대한 모든 정보를 저장하며, 프로세스를 추적, 제어하는데 사용되는 데이터 구조이다.

 

프로세스 생명주기(Process life cycle)

 > Ready State(준비상태), Running State(실행 상태), Blocked State(중단 상태) 로 구성.

 > 준비상태에서, 실행상태로 프로세스가 진행되고, 중간에 입/출력이 발생하면 중단상태가 됨.

 > 할당받은 시간동안, 작업이 끝나지 않으면 다시 준비상태로 가서 순서를 기다린다.

 

프로세스 상태전이 (Process state transition) : 운영체제에서 실행중인 프로세스가 다양한 상태를 거치며 시스템 자원을 사용하는 과정으로, 일반적으로 프로세스는 생성(New) > 준비(Ready) > 실행(Running) > 대기(Wating) > 종료(Terminated, Zombie(종료코드 실행전, 메모리에 아직 남아있음) > Out(종료코드 실행후, 메모리에서 제거됨) 이렇게 5가지 상태를 가짐.

 

유휴 상태(Idle state) : CPU가 아무런 작업을 하지 않고 대기하고 있는 상태. CPU가 실행 중인 프로세스가 없고, 어떠한 작업도 수행하지 않는 상태이다.

 


 

부모-자식 프로세스(Parent-child process) : 부모 프로세스가 자식 프로세스를 생성하고, 자식 프로세스는 부모 프로세스로부터 상속된 자원과 권한을 사용하며 실행된다.

 

 > fork() : 자식 프로세스를 생성하는 시스템 호출

 > exit() : 프로세스의 종료를 커널에 알리는 시스템 호출

 > wait() : 부모가 자식 프로세스의 종료를 기다리고 확인하는 시스템 호출

 

좀비프로세스(Zomebie process) : 종료하였지만, 부모 프로세스가 종료 코드를 읽지 않은 상태의 프로세스.

 

고아 프로세스(Orphan process) : 부모가 먼저 종료한 자식 프로세스

 

CPU Bound Job[CPU intensive process) / CPU 집중 프로세스 : 대부분의 시간을 계산 중심의 CPU 작업을 하느라 보내는 프로세스로, 배열 곱, 인공지능 연산, 이미지 처리등을 수행하며, CPU 속도가 성능을 좌우(CPU bound)한다.

 

I/O Bound Job[I/O intensive process) : 입출력 작업에 대부분의 시간을 보내는 프로세스로, 네트워크 전송, 파일 입출력에 집중된 프로세스이다. 입출력 장치나, 입출력 시스템의 속도가 성능을 좌우(I/O Bound)한다. / 파일 서버, 웹 서버 등

 

프로세스 오버레이(Process overlay) : 현재 실행중인 프로세스의 주소 공간에 새로운 응용프로그램을 적재하여 실행 시키는 방법.

 

스레드(Thread) : 하나의 프로세스 내에서 실행되는 실행&스케줄링 단위이다. 프로세스는 스레드의 컨테이너라고 할 수 있고, 스레드의 공유 공간(환경)을 제공한다. 스레드는 함수로 작성된다.

 

멀티 스레드(Multi Thread) : 하나의 프로세스 내에서 여러개의 스레드가 동시에 실행되는 것을 말한다. 멀티 스레드는 다른 스레드가 실행중인 작업에 영향을 주지 않고, 동시에 여러 작업을 처리할 수 있어, 시스템 자원을 효율적으로 사용할 수 있다.

 

스레드 제어 블록(TCB, Thread Control Block) : 운영체제가 각 스레드를 관리하기 위해 유지하는 정보의 집합으로, 각 스레드마다 하나씩 TCB가 존재한다.

 

스레드 컨텍스트 스위칭(Thread context switching) : 현재 실행중인 스레드를 중단시키고, 다른 스레드에게 CPU를 할당.

 

컨텍스트 스위칭 오버헤드(Context switching overhead) : CPU가 현재 실행중인 프로세스나 스레드를 중지하고, 다른 프로세스나 스레드를 실행하는 것으로, CPU는 현재 실행중인 프로세스나 스레드의 상태를 저장하고 다음에 실행할 프로세스나 스레드의 상태를 복원한다.

 

커널 레벨 스레드 (Kernel level thread) : 응용프로그램이 시스템 호출을 통해 커널 레벨 스레드를 생성하고, 커널이 스레드에 대한 정보(TCB)를 커널 공간에 생성하고 소유한다. 커널에 의해 스케줄되며, 스레드 주소 공간은 사용자 공간에 존재한다. 이 때 메인 스레드는, 커널 스레드이다.

 

사용자 레벨 스레드 (User level thread) : 응용프로그램이 라이브러리 함수를 호출하여 사용자 레벨 스레드를 생성한다. 스레드 라이브러리가 스레드 정보(U-TCB)를 사용자 공간에 생성하고 소유하며, 스레드 라이브러리에 의해 스케줄된다. 이 때 스레드 주소 공간은 사용자 공간에 존재한다.

 


 

작업 스케줄링(Job scheduling) : 배치 시스템에서, 대기중인 배치 작업 중 메모리에 적재할 작업을 결정하는 것.

 

CPU 스케줄링(CPU scheduling) : 프로세스/스레드 중에 하나를 선택하여 CPU에 할당하는 것으로, 오늘날 CPU 스케줄링은 스레드 중 하나를 선택하는 스레드 스케줄링이다.

 

CPU burst : 프로그램 실행 중, CPU연산이 연속적으로 실행되는 상황이다.

 

I/O burst : 프로그램 실행 중 I/O 장치의 입출력이 이루어지는 상황이다.

 

Time slice(or slot, quantum) : 스케줄된 스레드에게 한 번 할당하는 CPU 시간을 의미한다. 커널이 스케줄을 단행하는 주기 시간이다.

 

비선점(Non-preemption) : 프로세스나 스레드가 CPU를 점유하고 있는 동안 다른 프로세스나 스레드가 CPU를 강제로 뺏어올 수 없는 방식으로, 프로세스나 스레드가 CPU를 스스로 내어 놓을 때 까지 계속 실행됨.

 

선점(Preemption) : 프로세스나 스레드가 CPU를 점유하고 있는 동안, 운영체제가 CPU를 강제로 뺏어와 다른 프로세스나 스레드를 실행 시키는 방식으로, 선점형 스케줄링을 사용하는 운영체제는 운선순위나 시간 할당량 등의 조건에 따라 프로세스나 스레드를 선택하고, 실행 중인 프로세스나 스레드의 우선순위가 낮아지거나 시간 할당량이 만료되면 CPU를 강제로 뺏어오게된다.

 

디스패처(Dispatcher) : 컨텍스트 스위칭을 실행하는 커널 코드이다. 스케줄러에 의해 선택된 스레드를 CPU가 실행하도록 하는 작업으로, 커널 모드에서 사용자 모드로 전환시킨다. 새로 선택된 스레드가 이전에 중단된 곳에서부터 실행하도록 점프하는 역할을 한다.

 

기아(Starvation) : 스레드가 스케줄링에서 선택되지 못한 채 오랫동안 준비 리스트에 있는 상황.

 

에이징(Aging) : 기아의 해결책으로, 스레드가 준비 리스트에 머무는 시간에 비례하여 스케줄링 순위를 높이는 방법이다.

 

스레드 동기화(Thread synchronization) : 공유 데이터에 대한 다수의 스레드가 동시에 접근할 때, 공유 데이터가 훼손되는 문제의 해결책으로, 공유데이터를 접근하고자 하는 다수의 스레드가 충돌 없이 공유데이터에 접근하기 위해 상호 협력하는 것이다.

 


 

임계구역(Critical section) : 공유 데이터에 접근하는 프로그램 코드들이다.

 

상호배제(Mutual exclusion) :임계구역이 오직 한 스레드만 배타적 독점적으로 사용되도록 하는 기술이다.

 

임계구역 진입 코드(Entry code) : 상호 배제를 위해 필요한 코드로, 현재 임계 구역이 실행중인 스레드가 있는지 검사한다.

 

임계구역 코드(Critical code) : 멀티스레드 환경에서 동기화 문제를 해결하기 위한 방법 중 하나로, 임계구역은 공유 자원에 접근하는 코드 영역을 의미하며, 한 번에 한 스레드가 접근할 수 있도록 보호해야한다.

 

원자코드(atomic instruction) : 일련의 명령문을 모두 실행하거나, 전혀 실행하지 않는 하나의 단위로 실행되는 코드를 말한다. 원자 코드는 실행 중 다른 프로세스나 스레드와 상호작용에서 분리되어 안전하게 실행된다.

 

뮤택스(Mutex) : 잠김/열림 중 한 상태를 가지는 락 변수를 이용한다, 한 스레드만 임계구역에 진입시키며, 다른 스레드는 큐에 대기한다. > Sleep-wationg lock 기법

 

스핀락(Spin-lock) : 뮤텍스와 거의 같으나, Busy-waiting lock 기법을 사용한다. 락을 소유한 스레드만 자원을 배타적으로 사용할 수 있고, 동기화 기법이다.

 

세마포(Sepaphore) : 멀티 스레드 사이의 자원 관리 기법.

 

카운터 세마포(Counter semaphore) : 자원의 인스턴스가 여러개의 경우.

 

이진 세마포(Binary semaphore) : 자원이 1개있는경우, 멀티스레드 사이의 자원 관리. 한 개의 자원에 대해 한 개의 스레드만 엑세스 할 수 있도록 보호하는 기능을 하며, 뮤택스와 매우 유사하다.

 

우선순위 역전(Priority inversion) : 스레드의 동기화로 인해 높은 순위의 스레드가 낮은 순위의 스레드보다 늦게 스케줄링 되는 현상.

 

우선순위 올림(Priority ceiling) : 스레드가 공유 자원을 소유하게 될 때, 스레드의 우선순위를 미리 정해진 높은 우선순위로 일시적으로 올리는 것이다. 우선순위가 선점되지않고, 빨리 실행되도록 유도한다.

 

우선순위 상속(Priority inheritance) : 낮은 순위의 스레드가 공유 자원을 가지고 있는 동안, 높은 순위의 스레드가 공유 자원을 요청하면 공유 자원을 가진 스레드의 우선순위를 요청한 스레드보다 높게 설정하여 빨리 실행시킨다.

 


 

728x90
반응형

'Study > 운영체제(OS)' 카테고리의 다른 글

운영체제 관련 용어 정리 요약본.  (1) 2023.04.21
02. 운영체제의 태동  (1) 2023.04.18
01. 운영체제의 시작과 발전.  (1) 2023.04.18