✅ 운영체제 스케줄링

1️⃣ 시분할 시스템

다중 사용자를 위해 응답시간을 최소화 하는 시스템
예 : 서버 컴퓨터에 여러명이 접속했을 때 한명의 작업이 끝나고 다음 사람의 작업이 시작된다면 시간적으로 오래 걸리기 때문에 이런 부분을 최소화 해줍니다. (다중 사용자 지원)

  • CPU를 점유하는 시간을 잘게 쪼개어 실행됩니다. (1000ms = 1sec)
  • 시분할 시스템을 사용하면 응답시간이 확실히 달라집니다.

2️⃣ 멀티 태스킹

단일 cpu에서 여러 응용 프로그램이 동시에 실행되는 것처럼 보이게 하는 시스템 입니다.
예 : 노래들으면서 문서 작업하기

  • 10-20 ms 단위로도 실행 응용 프로그램이 바뀝니다.

✅ 스케줄링

✏️ 메모리 계층 - 컴퓨터 구조 이해

cycle은 CPU가 하나의 명령을 실행하는데 걸리는 시간을 나타내는 단위 입니다.

  • 위 이미지처럼 아래로 갈수록 처리 속도가 느려집니다.

1️⃣ 멀티 프로그래밍

CPU를 최대한 많이 활용하기 위하여 한 응용 프로그램이 I/O 입출력 등으로 인하여 CPU를 사용하지 않는 동안 다른 프로그램을 실행하도록 합니다.

2️⃣ 멀티 프로세싱

여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행 속도를 극대화하는 시스템입니다.

추후 스레드 공부 후 작성 예정

✅ 스케줄링 알고리즘

1️⃣ FIFO(First in First Out) - 배치 처리 시스템

  • 가장 간단한 스케줄링(배치처리 시스템)
  • 큐 자료구조를 이용해 스케줄링을 하는 FIFO 스케줄링 방식입니다.
  • 큐에 먼저들어온 순서대로 프로세스를 처리합니다.
  • 모두 완료될 때 까지 CPU를 독차지 하기 때문에 현대 운영체제에서는 잘 쓰이지않고 일괄 처리 시스템에서 자주 사용되는 스케줄링 알고리즘 입니다.

2️⃣ SJF(Shorted Job First) - 최단 작업 우선 알고리즘

프로세스 실행시간이 짧은 프로세스부터 먼저 실행시키는 알고리즘 입니다.

3️⃣ RR(Round Robin) - 시분할 시스템

FIFO 방식과 비슷하지만 프로세스가 끝날 때 까지 CPU를 차지 하는 것이 아닌 정해진 시간 만큼 프로세스를 수행한 후 다시 큐로 들어가는 방식입니다.

✏️ 우선순위 스케줄러

  • Priority-Based
    1. 정적 우선순위 : 프로세스마다 우선순위를 미리 지정합니다.
    2. 동적 우선순위 : 스케줄러가 상황에 따라 우선순위를 변경 합니다.

✅ 프로세스 구조

프로세스는 text, data, stack, heap 으로 구성되어 있습니다.
이런 주소 공간을 가상 메모리라고 부릅니다.

이름설명
text코드가 기계어 명령 형태로 변환되어 저장되는 공간
data변수/초기화된 데이터를 저장하는 공간
stack임시 데이터(함수 호출, 로컬 변수 등)를 저장하는 공간
heap프로그래머가 필요할 때 사용하는 메모리 영역

✏️ Java GC가 필요한 이유

불필요한 객체가 차지하는 공간을 삭제하여 자동으로 힙 공간을 확보하기 때문에 필요합니다. 힙 공간이 부족해지면 객체 생성이 불가하여 객체 지향 프로그램이 동작하지 않기 때문입니다.

✅ 컨텍스트 스위칭

여러개의 프로세스가 실행중일때 기존에 실행중인 프로세스를 중단하고
다른 프로세스를 실행하는 것입니다.
CPU에 실행할 프로세스를 교체하는 기술

1️⃣ PCB

컨텍스트 스위칭 시 해당 스레드만의 영역이 생성되며 나머지 영역(code, data, heap)은 부모 프로세스 영역에서 공유합니다.
스레드 마다 스택을 독립적으로 할당해 줍니다.

2️⃣ PID

프로그램이 실행되면 프로그램마다 PID(프로세스 아이디)가 생성됩니다.
이 PID는 각 프로그램마다 고유한 성질을 가지고 있어 각각 다른 번호로 부여됩니다.

3️⃣ 세부 동작

  1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트아여 메인 메모리에 저장합니다.
  2. 다음 실행할 프로세스 정보를 메모리에 있는 해당 PCB 정보를 CPU 레지스터에 넣고 실행합니다.
    레코드판 이라고 생각하면 됩니다.

✅ 프로세스 커뮤니케이션

프로세스는 다른 프로세스의 공간에 접근할 수 없습니다.
예시 : A프로세스 공간에 B프로세스가 침범할 수 없음
프로세스가 서로 커뮤니케이션을 하려면 ICP통신 방법을 사용해야합니다.

✏️ 다양한 ICP 기법

2번부터는 모두 커널 공간을 사용하는 기법입니다.

  1. file 사용
  2. Message Queue
  3. Shared Memory
  4. Pipe
  5. Signal
  6. Semaphore
  7. Socket 등

📝 총정리

  • 여러 프로세스를 동시 실행을 통한 성능 개선, 복잡한 프로그램을 위해 프로세스간 통신이 필요합니다.
  • 프로세스는 서로 공간이 분리 되어 있습니다.
  • 프로세스간 통신을 위해서는 특별한 기법이 필요합니다.(IPC)
  • 대부분의 IPC 기법은 커널 공간을 활용하는 것 입니다.(커널 공간은 서로 공유하기 때문에)
profile
#UXUI #코린이

0개의 댓글