5-*) 정리

김현우·2024년 5월 9일
0

운영체제

목록 보기
6/11
post-thumbnail

요약

용어

지금까지 배웠왔던 것을 한번 간단히 요약해보자.

프로그램
- 컴퓨터가 실행 가능한 명령어들의 집합

프로세스
- 컴퓨터에서 실행중인 프로그램
- 독립된 메모리 공간을 가지며 명령어와 데이터를 가지고있음

프로세서
- 명령어를 실행하는 연산장치

메인 메모리
- 프로세스가 프로세서에서 실행되기 위해 대기하는 장소

I/O
- 파일을 읽고 쓰기
- 네트워크 통신
- 입출력 장치와 통신

OS 발전순서

1. 단일 프로세스 시스템

- 한번에 하나의 프로세스 실행
- CPU 사용률이 좋지않음 (ex.한 프로세스가 I/O 작업한다면 끝날때 까지 대기해야함)

2. 멀티 프로그래밍 일괄처리 시스템

- 프로세스가 작업을 하다가 I/O 작업을 만나면 인터럽트를 사용해서 I/O 작업하게 하고
  프로세서는 다른 프로세스 작업
- 단일 프로세스 시스템의 문제를 해결하기위함
- CPU사용의 극대화를 위한 방법
- 하나의 프로세스가 너무 오랜시간 프로세서를 할당할 가능성 존재

3. 멀티태스킹

- 컴퓨터 사용시간을 매우 짧은 시간(quantum)으로 쪼개어 프로세스들을 번갈아서 실행
- p1->p2->p1->p2 이런식으로 퀀텀 동안만 실행 타임아웃 실행 타임아웃
- 이런 시스템을 멀티태스킹이라 하며 시분할은 이중 한종류
- 응답시간의 최소화를 목표로 하며 사용자가 여러 프로세스를 동시에 실행하듯이 느끼게함


남아있는 문제?들

1. 한 프로세스를 동시에 실행하는건 안되나?
2. 프로세스 스위칭은 힘든데.. 멀티태스킹에서는 계속해야하네...
3. 프로세스는 각자 데이터를 독립적으로 가지는데 데이터 공유가 너무 어렵다...
4. 듀얼코어 나왔는데 뭐 이거 활용법 없나?

그래서 나온 해결책이 "멀티스레딩"

스레드의 특징

1. 스레드는 한 프로세스 내의 실행의 단위
2. 프로세스 안에는 여러개의 스레드가 존재가능하다.
3. 스레드는 스택을 제외한 남은 메모리영역(힙,데이터,코드)를 공유한다.

* 이때 한 프로세스 내의 2개의 스레드가 있고 2개의 코어에 각각 실행이 가능
   -> 한 프로세스를 동시에 실행가능

* 스레드의 문맥교환은 프로세스보다 가벼움

위의 특징들로 인해 앞선 문제들이 해결됌
profile
학생

0개의 댓글