레지스터는 CPU 내부에 있으며 빠르게 데이터를 저장하고, 현재 실행중인 명령의 내용을 기억하고, 다음번에 실행할 명령어의 번지를 기억한다.
캐시는 CPU 내부에 있으며, CPU 처리 속도와 메모리의 접근 속도의 차이를 줄이기 위해 자주 사용되는 데이터나 값을 미리 복사해 놓는 임시 저장소이다.
메인 메모리는 CPU 외부에 있으며, 프로세스가 필요로 하는 모든 데이터와 명령어가 메인 메모리에 저장된다. 데이터가 캐시에 없을 때 CPU는 메인 메모리로 이동하여 데이터를 가져온다.
프로그램이 실행되면 프로세스가 된다. (동적 상태)
프로그램은 저장장치에 있는 소스코드이다. (정적 상태)
프로세스는 운영체제에 의해 메모리에 위치한다.
프로세스 제어 블록이란 프로제스가 생성될 때 커널 영역에 각 프로세스당 하나씩 생성된다.
프로세스는 왜 관리되어야 할까?
컴퓨터의 자원을 효율적으로 활용해야 하기 때문이다.
다중 프로세스 환경은 병렬 처리가 가능하여 시스템 성능 향상을 기대할 수 있고, 시분할 시스템은 CPU 시간을 작은 단위로 분할하여 여러 프로세스가 동시에 실행되는 것처럼 보이게 할 수 있다.
위 목적을 달성하기 위해 프로세스 스케줄러를 사용한다.
Context Switching이란 현재 프로세스를 다른 프로세스로 교환하기 위해서 이전 프로세스의 상태를 보관하고 새로운 프로세스를 Ready Queue에 올립니다.
독립적인 프로세스가 아니라면 프로세스 간 통신은 중요하다.
정보 공유 : 여러 응용 프로그램에게 동일한 리소스가 필요할 수 있음
계산 가속화 : 특정 태스크를 빠르게 수행할 수 있도록 함.
IPC의 방식
1. 공유 메모리
- 버퍼를 사용
2. 메시지 전달
생산자 - 소비자 패턴
ex) 웹 서버(생산자)는 HTML을 제공하고 클라이언트 브라우저(소비자)는 이를 렌더링해서 사용한다.
두 프로세스가 통신하려면 양쪽 프로세스에 소켓이 필요하다.
스레드는 CPU 이용의 기본 단위이다.
같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션 등의 운영체제 자원들을 공유한다.
프로세스는 스레드의 집합. 스레드는 경량 프로세스라고 할 수 있다.
스레드는 두가지 수준으로 지원된다.