1) 프로세스란?
CPU에 처리되는 사용자프로그램이나 시스템프로그램으로 ,
프로세스는 각종 자원을 요구한다.
즉, 실행중인 프로그램이다.
2) 프로세스의 주요 상태
(1) 준비
프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
(2) 실행
준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
(3) 대기 , 보류, 블록
입출력 요구가 발생되어 현재 실행중인 프로세스가 중단되고 완료될때까지 대기하고 있는 상태
* Dispatch : 준비상태에 있는 프로세스 중 하나가 할당받아 실행상태로 전이
* Wake-up : 입출력 작업이 완료되어 대기상태에서 준비상태로 전이
3) 임계구역(critical section)
여러 프로세스가 공유하는 데이터 및 자원에 대하여,
어느 한 시점에서 하나의 프로세스만 사용되도록 지정된 공유 자원이다.
한번에 하나의 프로세스만 접근한다.
4) 상호 배제(mutual exclusion)
프로세스가 공유 자원을 사용할 경우,
다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하는 기법이다.
즉,
여러 프로세스가 동시 사용을 하기 위해 번갈아가면서 공유 자원을 사용하도록 하는것으로,
임계 구역을 유지하는 기법이다.
* 임계구역 내에서는 인터럽트, 교착상태, 무한 반복이 발생되지 않도록 조심해야 한다.
상호배제의 소프트웨어적 구현 : 데커, 피터슨 알고리즘
상호배제의 하드웨어적 구현 : Test&Set, Swap 기법
5) PCB(Process Control BlocK)
5-1) PCB란,
운영체제가 프로세스에 대한 중요한 정보를 저장해놓는 곳으로
프로세스를 실행할 때마다 PCB가 생성되고 , 완료되면 제거된다.
5-2) PCB에 저장되어있는 정보
1) 프로세스의 현재 상태
2) 포인터
3) 프로세스 고유 식별자
4) 스케쥴링 및 프로세스의 우선순위
5) CPU 레지스터 정보 (프로그램카운터, 처리기 레지스터)
6) 주기억 장치 관리 정보
7) 입출력 상태 정보
6) 스레드 (thread)
6-1) 스레드의 종류
- 사용자 수준의 스레드 : 사용자가 만든 라이브러리를 사용하여 운용 , 속도는 빠르나 구현이 어려움
- 커널 수준의 스레드 : 운영체제 커널에 의해 스레드 운영 , 속도는 느리지만 구현이 어려움
6-2) 스레드 장점
1) 병행성 증진
2) 응답시간 단축
3) 자원의 낭비 감소
4) 처리율 향상
7) 로더(loader)
7-1) 로더의 정의
컴퓨터 내부로 정보가 들어오거나
보조기억으로부터 주기억장치에 적재하는 시스템 소프트웨어이다.
로더의 각 기능을 언어 번역 프로그램이 수행할 수 도 있다.
* 언어 번역 프로그램 : 원시 프로그램을 기계어 형태의 목적 프로그램으로 번역
* 서비스 프로그램 : 컴퓨터가 효율적으로 사용할 수 있는 사용빈도가 높은 프로그램
7-2) 로더의 기능
1) 할당 (allocation) : 실행프로그램을 실행시키기 위해 기억장치에 옮겨놓을 공간을 확보하는 기능
2) 연결 (linking) : 부 프로그램 호출시 부 프로그램이 할당 된 기억장소의 시작주소를 호출한 부분에 등록하여 연결
3) 재배치 (relocation) : 보조기억 장치의 각 주소들을 할당된 기억장치의 실제 주소로 배치
4) 적재(loading): 실행 프로그램을 할당된 기억공간에 실제로 옮기는 기능
7-3) 로더의종류
1) Complie and go 로더 : 별도의 로더없이 언어프로그램이 로더의 기능까지 수행한다.
2) 절대 로더 : 목적프로그램을 기억장소에 적재시키는 기능만 수행 , 로더 중 가장 간단하게 구성됨.
3) 직접 연결 로더 : 일반적인 기능의 로더 // 할당, 연결. 재배치, 적재를 모두 수행
4) 동적 적대 로더 : 시행시 필요한 일부분을 적재하는 로더로, Load-on-call이라고도 함