1. 프로세스와 프로그램
- 프로그램 : 컴파일된 코드와 전역 변수 등의 정적 데이터를 가진 정걱인 개체
- 프로세스 : 프로세스는 현재 메모리에 올라가 동작중인 프로그램
- 멀티프로세싱 : 여러개의 CPU에서 여러개의 프로세스를 처리하는 것
- 멀티프로그래밍 : 1개의 CPU에서 여러개의 프로세스를 처리하는 것
- 멀티태스킹 : 다수의 작업(프로세스, 쓰레드 등)을 운영체제 스케줄링에 의해 번갈아가면서 처리하는것
※ 멀티프로그래밍과 멀티태스킹 차이 : 멀티프로그래밍은 프로세스가 Idle일때 실행되고
멀티태스킹은 정해진 시간동안 번갈아가면서 실행
2. 프로세스의 메모리 구조
프로세스는 4개의 영역으로 나누어져 있다.
1) 스택 : 지역변수나 매개변수들이 저장되는 공간, Top-Down방향으로
높은 메모리 주소에서 낮은 메모리 주소로 할당됨
2) 힙 : 동적으로 생성된 객체들이 저장되는 공간, Bottom-Up방향으로
낮은 메모리 주소에서 높은 메모리 주소로 할당됨
3) 데이터 : 전역변수나 정적변수들이 저장되는 공간
4) 코드 : 코드영역은 컴파일된 코드를 저장하는 영역이며 읽기 전용영역이다.
실행중에 코드를 수정하면 안되기 때문이다.
※ 재진입 프로그램 : 같은 프로그램이지만 별개의 프로세스로 인식 할 수 있게 만든 프로그램(ex 메모장)
3. 프로세스의 상태변화
1) 프로세스가 생성된 후 ready 상태로 변경
2) 디스패쳐 의해 ready -> running 상태로 변경(cpu에 할당된 상태)
3) 프로세스가 완료되면 종료
4) 완료되지 않은 상태에서 할당시간을 넘었을때 running -> ready로 변경
5) 완료되지 않은 상태에서 이벤트나 IO신호가 일어났을때 running -> wait로 변경
6) 이벤트 또는 IO신호 처리가 끝났을때 wait -> ready로 변경
4. 인터럽트
인터럽트는 흐름의 변화를 의미한다. 크게 내부(소프트웨어) 인터럽트와 외부(하드웨어) 인터럽트가 있다.
내부 인터럽트 : 프로세스 내부에서 발생하는 인터럽트이며 트랩이라고도 불린다. 발생하는 시점이 고정되어있다.
외부 인터럽트 : IO신호에 의해 발생하는 인터럽트이다.
5. 쓰레드
쓰레드는 프로세스 안에 존재하는 경량화된 프로세스라고 불린다.
프로세스 안에서 독립적으로 수행을 하며 프로세스의 스택을 제외한 힙, 코드, 데이터 영역을 공유한다.
- 장점 : 프로세스의 자원공유, 다중처리로 효율성 증가, 프로세스 문맥교환보다 오버헤드가 줄어들음
- 단점 : 자원공유로 인한 문제
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 상호배재와 교착상태 (0) | 2021.05.24 |
---|
댓글