-
[OS] Process / ThreadComputer Science/Operation System 2020. 4. 9. 12:22
[OS] ✔️ 프로세스 ( process )
◾ 프로세스는 CPU가 수행 중인 프로그램을 말한다.
◾ 운영체제로부터 자원을 할당 받는 자원 소유권의 단위이다.
◾ 운영체제로부터 code, data, stack, heap, PC, register 등의 자원을 할당받는다.
◾ 프로그램은 명령어 리스트를 지닌 실행 파일 클래스이고, 프로세스는 메모리에 적재되어 프로그램 카운터와 자원을 가진 인스턴스이다.
1️⃣ 프로세스의 문맥 ( Context )
◾️ 프로그램은 실행이 되고 종료된다. 문맥이라는 것은 특정 시점에 프로세스가 어떤 상태인지 나타내기 위해서 사용되는 것이다.
◾️ 즉, 프로세스의 문맥을 통해 특정 시점에서 프로세스가 어디까지 수행을 했는지를 알 수 있다.
◾️ 프로세스의 현재 상태를 나타내는데 필요한 모든 요소를 문맥 ( Context ) 이라고 한다.
2️⃣ 프로세스의 상태
◾️ New : 지금 막 생성되었지만, 실행 가능한 프로세스 풀(pool)로 진입이 허용되지 않는 상태
◾️ Ready : CPU 할당을 기다리는 상태
◾️ Running : CPU를 할당받고 instruction을 실행중인 상태
◾️ Blocked : CPU를 할당해줘도 instruction 실행 할 수 없는 상태 ( I/O 대기 )
◾️ Suspend : 하드디스크에 보내진 프로세스의 상태 ( 메인 메모리 공간 확보를 위함 )
◾️ Exit : 실행이 종료된 상태
프로세스 7-상태 모델 3️⃣ PCB ( Process Control Block )
◾️ PCB는 운영체제가 각 프로세스를 관리하기 위해 각 프로세스가 유지하는 정보이다. PCB는 아래와 같이 구성된다.
1. OS가 관리상 사용하는 정보 : Process state, Process ID, scheduling information, priority
2. CPU 실행 관련 하드웨어 값 : Program counter, registers
3. 메모리 관련 : code, data, stack의 메모리 위치 정보 ( 포인터 )
4. 파일 관련: open file descriptors ( 프로세스가 사용하는 파일이 어떤건지에 대한 정보 )
◾️ PCB는 역할은 인터럽트에 의해 실행이 중단된 프로세스가 다시 실행하려고 할 때 필요한 정보를 가지고 있는것이다.
4️⃣ Context Switching ( 문맥 교환 )
◾️ CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
◾️ CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행한다.
1. 실행 중인 프로세스의 현재 상태를 PCB에 저장한다.
2. 새롭게 실행되는 프로세스의 정보를 PCB에서 읽어온다.
✔️ 쓰레드(thread)
◾️ 쓰레드는 프로세스가 할당 받은 자원을 이용하는 실행의 단위이다.
◾️ 쓰레드는 프로세스보다 생성/종료 시간이 짧다.
◾️ 프로세스의 쓰레드들은 프로세스의 자원과 메모리를 공유하므로 커널의 도움 없이 서로 효율적으로 통신이 가능하다.
◾️ 쓰레드는 프로세스의 code, data, heap 등의 자원을 공유한다.
◾️ CPU 수행과 관련된 독자적인 PC, regiser값, stack을 가지고 있다. (TCB)
1️⃣ 멀티 쓰레딩
◾️ 프로세의 작업을 여러 개의 쓰레드로 나누어 병렬로 작업을 수행하는 것을 말한다.
👍 멀티 쓰레딩 장점
◾️ Responsiveness : 프로세스 내의 하나의 쓰레드가 blocked 되더라도 다른 쓰레드가 실행되어 빠른 처리를 할 수 있다. (비동기 작업, 단일 프로세스인 경우 blocked 되면 모든 작업이 중단된다. )
◾️ Resource Sharing : 여러 쓰레드는 프로세스의 자원을 공유할 수 있기 때문에 자원을 효율적으로 사용할 수 있다.
◾️ Economy : 쓰레드는 프로세스보다 생성/종료 시간이 짧다. 프로세스간 Switching보다 쓰레드간 Switching이 오버헤드가 적다.
◾️ Utilization of MP Architectures : 멀티프로세서 구조에서 각각의 쓰레드가 서로 다른 프로세스에서 병렬로 동시에 수행될 수 있다.
👎 멀티 쓰레딩 단점
◾️ 다수의 쓰레드는 하나의 프로세스 자원을 공유하기 때문에 race condition 발생 가능성이 있으므로 쓰레드간 동기화가 필요하다.
◾️ 프로그램 디버깅이 어려울 수 있다.
2️⃣ User level thread
◾️ 사용자 프로세스가 직접 쓰레드를 관리한다.
◾️ 운영체제는 쓰레드의 존재를 알 수 없다.
3️⃣ Kernel level thread
◾️ 운영체제가 쓰레드의 존재를 알고 있음
'Computer Science > Operation System' 카테고리의 다른 글
[OS] DeadLock (0) 2020.04.23 [OS] Process Synchronization (0) 2020.04.14 [OS] CPU Scheduling (0) 2020.04.10 [OS] Process Management (0) 2020.04.09 [OS] Operating System Introduction (0) 2020.04.09