환경변수 : 프로세스별로 별도의 메모리 공간에 문자열 데이터를 저장하고 관리할 수 있도록 되어 있다.
key = value
부모 프로세스는 자식 프로세스 생성 시, 자식 프로세스의 환경변수를 등록할 수도 있고, 그냥 부모 프로세스의 환경변수를 상속시킬 수 있다.
환경변수 등록 함수 : SetEnvironmentVariable()
lpName | key에 해당하는 값을 지정 (key를 통해 value를 참조하게 됨) |
lpValue | value에 해당하는 값을 지정 |
환경변수 참조 함수 : GetEnvironmentVariable()
lpName | key를 전달 (key에 해당하는 value를 얻게 됨) |
lpBuffer | value 값을 저장하기 위한 메모리의 주소 지정 |
nSize | lpBuffer가 가리키는 메모리의 크기 지정 |
이것만은 알고 갑시다
1. 핸들 테이블
- 커널오브젝트와 핸들 사이에 핸들 테이블이 존재한다. 이로서 핸들을 참조하여 특정 커널 오브젝트를 가리킬 수 있다.
2. 핸들과 핸들 테이블
- 핸들 테이블은 프로세스별로 독립적이다. 그리고 숫자가 핸들로서 의미를 지니기 위해서는 핸들 테이블에 등록되어야 한다. 등록되는 순간부터 핸들이라 할 수 있으며 이 핸들을 통해서 커널 오브젝트에 접근하는 것이 가능하다.
3. 핸들의 상속
- 핸들은 자식 프로세스를 생성하는 과정에서 상속될 수 있다. 핸들이 자식 프로세스에게 상속된다는 말은 부모 프로세스의 핸들 테이블 정보가 자식 프로세스의 핸들 테이블에 복사된다는 뜻이다.
4. 가짜 핸들 (Pseudo 핸들)
- GetCurrentProcess 함수 호출을 통해서 얻은 핸들을 가리켜 가짜 핸들이라 한다. 이는 핸들 테이블에 등록된 핸들값이 아닌, 자기 자신의 프로세스를 가리키기 위한 약속된 상수이기 때문이다. 핸들 테이블에 등록된 핸들을 얻기 위해서는 DuplicateHandle 함수를 사용해야 한다.
5. 파이프
- 이름없는 파이프와 이름있는 파이프가 있다. 이름없는 파이프는 프로세스간의 관계가 있을 시 유용하며, 단방향 방식이다. 이름있는 파이프는 메일슬롯과 유사하지만, 브로드캐스트 방식을 지원하지 않으며 양방향 통신을 한다.
11.1 쓰레드란 무엇인가? (0) | 2020.04.19 |
---|---|
09.1 프로세스의 스케줄링(Scheduling) (0) | 2020.04.18 |
08.2 파이프 방식의 IPC (0) | 2020.04.18 |
08.1 핸들 테이블과 오브젝트 핸들의 상속 (0) | 2020.04.18 |
07.3 Signaled vs Non-Signaled (0) | 2020.04.18 |
댓글 영역