Computer Science
프로세스, 스레드에 대해 알아보자
프로그램 프로세스를 이해하기 위해서는 프로그램이 무엇인지 알아야 한다. 프로그램은 진행 절차나 순서를 명시한 문서로, 컴퓨터에서는 하드 디스크 내에 저장된다. 프로세스 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다. 프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있다. 프로세스가 할당 받는 OS 자원 예시 CPU 시간 CPU 시간은 프로세스가 실제로 CPU를 사용하는 시간을 의미한다. CPU 시간은 크게 사용자 CPU 시간과 커널 CPU 시간으로 구분된다. 사용자 CPU 시간: 유저 모드에서 실행되는 시간 커널 CPU 시간: 커널 모드에서 실행되는 시간 커널: 운영체제의 핵심 부분으로, 하드웨어와 응용 프로그램을 연결해주는 역할을 한다. 메모리 Code: 프로그램 코드가 저장되는 영역 실행되는 코드 자체를 의미한다. 여기서 코드란 프로그래머가 작성한 코드가 아니라 컴파일러가 기계어로 번역한 코드를 의미한다. Data: 전역 변수가 저장되는 영역 전역 변수는 프로그램 전체에서 사용되는 변수를 의미한다. 전역 변수는 프로그램의 데이터 영역에 저장된다. Stack: 지역 변수가 저장되는 영역 지역 변수는 함수 내에서 선언되어 함수가 호출될 때 생성되고 함수가 종료되면 소멸하는 변수를 의미한다. 지역 변수는 스택 영역에 저장된다. Heap: 동적 할당 변수가 저장되는 영역 사용자가 직접 관리할 수 있는 변수를 의미한다. 동적 할당 변수는 힙 영역에 저장된다. 파일 및 I/O 장치 프로세스는 실행 중에 필요한 데이터를 메모리에 적재하고, 실행 결과를 메모리에서 파일이나 I/O 장치로 쓰기도 한다. 프로세스 간 메모리 공유 프로세스는 각각 독립된 메모리 영역을 할당받아 사용한다. 따라서 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다. 따라서 프로세스 간에는 적절한 통신 방법을 사용해야 한다. 프로세스 간 통신 방법 파이프 파이프는 한 프로세스가 다른 프로세스로부터 데이터를 전달받을 수 있도록 한다. 파이프는 한쪽 방향으로만 통신이 가능하다. 메시지 큐 메시지 큐는 데이터를 메시지라는 단위로 주고받을 수 있도록 한다. 메시지 큐는 양방향 통신이 가능하다. 공유 메모리 공유 메모리는 두 프로세스가 모두 접근 가능한 메모리를 사용하는 방식이다. 공유 메모리는 두 프로세스가 동시에 접근할 수 있기 때문에 동기화 문제가 발생할 수 있다. 소켓 소켓은 네트워크를 통해 데이터를 주고받을 수 있도록 한다. 소켓은 양방향 통신이 가능하다. 신호 신호는 프로세스에게 어떤 이벤트가 발생했는지 알려준다. 프로세스는 신호를 받으면 해당 이벤트를 처리한다. 파일 파일은 하드디스크에 저장된 데이터를 읽고 쓸 수 있도록 한다. 파일은 양방향 통신이 가능하다. 프로세스 상태 프로세스는 상태가 변경되며 수행된다. 프로세스는 다음과 같은 상태를 가진다.
2024년 1월 4일