다중 사용자를 위해 응답시간을 최소화 하는 시스템
예 : 서버 컴퓨터에 여러명이 접속했을 때 한명의 작업이 끝나고 다음 사람의 작업이 시작된다면 시간적으로 오래 걸리기 때문에 이런 부분을 최소화 해줍니다. (다중 사용자 지원)
단일 cpu에서 여러 응용 프로그램이 동시에 실행되는 것처럼 보이게 하는 시스템 입니다.
예 : 노래들으면서 문서 작업하기
cycle은 CPU가 하나의 명령을 실행하는데 걸리는 시간을 나타내는 단위 입니다.
CPU를 최대한 많이 활용하기 위하여 한 응용 프로그램이 I/O 입출력 등으로 인하여 CPU를 사용하지 않는 동안 다른 프로그램을 실행하도록 합니다.
여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행 속도를 극대화하는 시스템입니다.
추후 스레드 공부 후 작성 예정
- 가장 간단한 스케줄링(배치처리 시스템)
- 큐 자료구조를 이용해 스케줄링을 하는 FIFO 스케줄링 방식입니다.
- 큐에 먼저들어온 순서대로 프로세스를 처리합니다.
- 모두 완료될 때 까지 CPU를 독차지 하기 때문에 현대 운영체제에서는 잘 쓰이지않고 일괄 처리 시스템에서 자주 사용되는 스케줄링 알고리즘 입니다.
프로세스 실행시간이 짧은 프로세스부터 먼저 실행시키는 알고리즘 입니다.
FIFO 방식과 비슷하지만 프로세스가 끝날 때 까지 CPU를 차지 하는 것이 아닌 정해진 시간 만큼 프로세스를 수행한 후 다시 큐로 들어가는 방식입니다.
프로세스는 text, data, stack, heap 으로 구성되어 있습니다.
이런 주소 공간을 가상 메모리라고 부릅니다.
이름 | 설명 |
---|---|
text | 코드가 기계어 명령 형태로 변환되어 저장되는 공간 |
data | 변수/초기화된 데이터를 저장하는 공간 |
stack | 임시 데이터(함수 호출, 로컬 변수 등)를 저장하는 공간 |
heap | 프로그래머가 필요할 때 사용하는 메모리 영역 |
불필요한 객체가 차지하는 공간을 삭제하여 자동으로 힙 공간을 확보하기 때문에 필요합니다. 힙 공간이 부족해지면 객체 생성이 불가하여 객체 지향 프로그램이 동작하지 않기 때문입니다.
여러개의 프로세스가 실행중일때 기존에 실행중인 프로세스를 중단하고
다른 프로세스를 실행하는 것입니다.
CPU에 실행할 프로세스를 교체하는 기술
컨텍스트 스위칭 시 해당 스레드만의 영역이 생성되며 나머지 영역(code, data, heap)은 부모 프로세스 영역에서 공유합니다.
스레드 마다 스택을 독립적으로 할당해 줍니다.
프로그램이 실행되면 프로그램마다 PID(프로세스 아이디)가 생성됩니다.
이 PID는 각 프로그램마다 고유한 성질을 가지고 있어 각각 다른 번호로 부여됩니다.
- 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트아여 메인 메모리에 저장합니다.
- 다음 실행할 프로세스 정보를 메모리에 있는 해당 PCB 정보를 CPU 레지스터에 넣고 실행합니다.
레코드판 이라고 생각하면 됩니다.
프로세스는 다른 프로세스의 공간에 접근할 수 없습니다.
예시 : A프로세스 공간에 B프로세스가 침범할 수 없음
프로세스가 서로 커뮤니케이션을 하려면 ICP통신 방법을 사용해야합니다.
2번부터는 모두 커널 공간을 사용하는 기법입니다.
- 여러 프로세스를 동시 실행을 통한 성능 개선, 복잡한 프로그램을 위해 프로세스간 통신이 필요합니다.
- 프로세스는 서로 공간이 분리 되어 있습니다.
- 프로세스간 통신을 위해서는 특별한 기법이 필요합니다.(IPC)
- 대부분의 IPC 기법은 커널 공간을 활용하는 것 입니다.(커널 공간은 서로 공유하기 때문에)