본문 바로가기

CS22

프로세스와 스레드 [혼공컴운] 스레드 - 프로세스를 구성하는 실행의 흐름 단위 - 프로세스 내에서 각기 다른 스레드 ID, 프로그램 카운터 값을 비롯한 레지스터 값, 스택으로 구성 - 각자 프로그램 카운터 값을 비롯한 레지스터 값, 스택을 가지고 있기에 스레드 마다 다른 코드를 실행 가능 - 실행에 필요한 최소한의 정보만을 유지한 채 프로세스 자원을 공유하며 실행 - PC를 포함한 레지스터, 스택을 공유 - 메모리를 효율적으로 사용 가능 - 프로세스의 자원을 공유하기 떄문에 서로 협력과 통신에 유리함 - 멀티 프로세스는 하나의 스레드에 문제가 생기면 프로세스 전체에 문제가 생길 수 있음 - 종류 - 단일 스레드 프로세스 - 모든 프로세스가 하나의 실행 흐름을 가지고 한 번에 하나의 부분만 실행 - 멀티 스레드 프로세스 - 여러 스레드.. 2023. 12. 15.
프로세스 계층 구조 & 생성 기법 [혼공컴운] 프로세스 계층 구조 - 실행되는 최초의 프로세스가 자식 프로세스들을 생성하고, 생성된 자식 프로세스들이 새로운 프로세스를 낳는 형식을 트리 구조로 표현 - 최초의 프로세스의 PID는 항상 1이며, 모든 프로세스의 최상단에 있는 부모 프로세스이다 프로세스 생성 기법 - 부모 프로세스를 통해 생성된 자식 프로세스들은 복제와 옷 갈아입기를 통해 실행 - fork() - 복제 . - 자신의 복사본을 자식 프로세스로 생성하는 시스템 호출 - 메모리 내용, 열린 파일의 목록 등이 자식 프로세스에 상속 - 복사된 자식 프로세스는 다른 PID를 가지고, 저장된 메모리 위치도 다름 - exec() - 옷 갈아입기 - 자신의 메모리 공간을 새로운 프로그램으로 교체 - 코드 영역과 데이터 영역의 내용이 실행할 프로그램의 내.. 2023. 12. 15.
문맥 교환 [혼공컴운] 문맥교환 - 기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행 - 문맥 (context) - 하나의 프로세스 수행을 위해 기억해야 할 정보 - pcb에 저장되는 정보들 - 문맥 교환이 자주 일어나면 프로세스는 그만큼 빨리 번갈아 가며 수행되기 때문에 프로세스들이 동시에 실행되는 것 처럼 보임 - 문맥 교환을 너무 자주 하면 오버헤드가 발생 - 문맥 교환이 진행될 동안 시스템이 아무런 유용한 일을 못 하기 때문에 문맥 교환 시간은 순수한 오버헤드 - 문맥 교환의 속도는 메모리의 속도, 반드시 복사되어야 하는 레지스터의 수, 특수 명령어의 존재에 좌우되므로, 기계마다 다름. 2023. 12. 14.
프로세스 [혼공컴운] 프로세스 - 실행중인 프로그램 - 프로그램 vs 프로세스 - 프로그램 - 명령어 리스트를 내용으로 가진 디스크에 저장된 파일 (실행 파일) - passive entity (수동적 엔티티) - 프로세스 - 다음에 실행할 명령어를 지정하는 프로그램 카운터와 관련 자원 집합 - active entity (능동적 엔티티) - 실행 파일이 메모리에 적재될 때 프로그램은 프로세스가 됨 - 포그라운드 프로세스 - 사용자가 볼 수 있는 공간에서 실행 - 백그라운드 프로세스 - 사용자가 보이지 않는 공간에서 실행 - 데몬 (UNIX 계열), 서비스 (윈도우) - 사용자와 상호작용하지 않고 정해진 일만 수행하는 백그라운드 프로세스 - 구조 - 코드 영역 (텍스트 영역) - 실행 코드 - 기계어로 이루어진 명령어 저장 - .. 2023. 12. 14.