시스템 프로그래밍 7

프로세스 간 통신

프로세스 간 통신(IPC)- 프로세스 간 데이터 송, 수신을 의미 -> 즉 메모리 공유- 대표적 기법으로 메일슬롯 존재  메일 슬롯- 단방향 통신 : 두 프로세스간 메시지 전달을 위해서는 두 개의 메일슬롯을 생성해야함- 브로드캐스트 가능 : 여러 Sender가 하나의 Reciever에게 데이터 전달 가능   커널 오브젝트의 Non-signaled, Signaled 상태- 프로세스가 실행중이면 Non-signaled, 신호를 받지 않는 상태- 프로세스가 종료되면 Signaled, 신호를 받는 상태- 종료된 프로세스를 살릴 수 없듯이, Signaled상태가 되면 절대 Non-signaled로 돌아갈 수 없음   핸들과 핸들 테이블- 핸들 테이블 : 핸들 정보를 저장하고 있는 테이블로, 프로세스별로 독립적(프..

커널 오브젝트와 오브젝트 핸들

커널 오브젝트- 커널에 의해 관리되는 리소스 정보를 담고 있는 데이터 블록(프로세스 상태정보 등)- 프로그래머가 직접적으로 생성하거나 조작할 수 없음- 프로세스 관리를 위해 운영체제 내부에 저장됨  핸들- 접근이 차단된 커널 오브젝트에 접근할 수 있는 참조값, 커널 오브젝트에 할당되는 키값 > 간접적 조작 가능- 운영체제는 각 프로세스에 대응하는 핸들 테이블을 할당하고, 이 테이블을 통해 커널 오브젝트에 접근(OS에 요청)  커널 오브젝트와 Usage Count(UC)- UC : 커널오브젝트를 소멸시키기 위해 근거가되는 값- 프로세스의 생성과 동시에 UC는 1- 자식프로세스가 생성되면 UC는 2(생성하며 자식프로세스의 핸들을 얻고, 자식프로세스 자체 참조, 총 2개)- 자식프로세스 종료시 종료코드를 커널..

프로세스의 생성과 소멸

프로세스란- 주 기억장치에 적재되어 현재 실행 중에 있는 프로그램을 프로세스라 함    프로세스의 구성 요소- 프로세스의 범위는 메모리 구조 + 레지스터셋- 메모리 구조는 코드, 데이터, 힙, 스택 영역으로 생성 > 프로세스별로 할당(프로세스가 2개면 이 메모리 구조도 2개가 할당)- 레지스터셋들은 현재 실행중에 있는 프로세스의 실행에 필요한 데이터들로 채워지며, 이는 컨텍스트 스위칭으로 프로세스별로 교체된다.   프로세스 스케줄러- 스케줄러는 둘 이상의 프로세스가 적절히 실행되도록 컨트롤- 스케줄링 방법은 스케줄링 알고리즘에 따라 다양함- S에서 Ready로 프로세스 생성- ready에서 running : 스케줄링- running에서 ready : 우선순위에 의해 밀려날 때- running에서 bloc..

컴퓨터 구조 2

컴퓨터 디자인을 한다면레지스터 디자인- 레지스터는 몇 비트로 구성할 것인가?- 몇 개 정도로 레지스터를 구성할 것인가?- 레지스터 각각을 무슨 용도로 사용할 것인가?명령어 디자인- 명령어의 기본 모델은 16비트 명령어- 2bit : 예약- 3bit : 연산자- 3bit : 저장소(store)- 4bit : 피연산자 1- 4bit : 피연산자 2 LOAD, STORE 명령어의 필요성과 디자인- 사칙연산의 피 연산자는 숫자 or 레지스터이며 연산 결과는 레지스터에 저장됨- 즉 레지스터를 통해 모든 연산을 진행하겠다는데서 착안LOAD 명령어- LOAD r1, 0x20(메모리 주소) > r1에 0x20의 값을 로드STORE 명령어- STORE r1, 0x20(메모리 주소) > 0x30에 r1의 값을 저장  Di..

64비트 기반 프로그래밍

32비트 64비트 시스템의 구분 방법한번에 송수신 할 수 있는 데이터의 크기한번에 처리할 수 있는 데이터의 크기 프로그래머 입장에서의 64비트 시스템- Windows에서는 32비트에서 64비트로 갈 때, 기존 32비트의 호환성을 중시- 프로그램으로 표현할 수 있는 범위가 증가 > 표현할 수 있는 메모리 크기 증가(32비트는 4GB 제한)- 활용 가능 메모리의 확장으로 동적할당이 자유로움- 32비트 포인터가 64비트 포인터로 변경  프로그램 구현 관점에서의 64비트 시스템- 64비트 기반 프로그래밍은 64비트 시스템을 고려한 프로그래밍으로 자료형에 대해 생각해야한다.\- 32비트 시스템과의 호환성을 중시한 모델은 LLP64, LP64가 있다OS모델charshortintlong포인터WindowsLLP641B..

아스키코드와 유니코드

문자셋(Character Sets)의 종류와 특성SBCS(Single Byte Chracter Set)- 문자를 표현하는데 1바이트를 사용- ASCII CodeMBCS(Multi Byte Character Set)- 한글은 2바이트, 영문은 1바이트를 사용WBCS(Wide Byte Character Set)- 문자를 표현하는데 2바이트 사용- UNICODE   WBCS 기반 프로그래밍 방법사용방법- char를 대신하는 wchar_t- wprintf, wscanf, fgetws, fputws 등- 문자열 " "앞에 L 삽입 -> L" " (ex. wchar_t[] = L"Hello, world!";  매개변수 전달인자 유니코드화- C:\> test.exe AAA BBB -> int main(int argc..

컴퓨터 구조

컴퓨터 시스템의 주요 구성 요소컴퓨터 구조- CPU, 캐시운영체제- 메인 메모리 -> 메모리 관리 기법- 하드디스크 -> 파일 I/O(다양한 I/O 포함) - 명령어의 내용대로 연산을 하는 주 요소는 ALU이지만, 명령어를 해석해서 해야 할 일을 결정하는 요소는 컨트롤 유닛이다- 컴퓨터 내부의 각종 요소들은 클럭 신호(Clock Pulse)에 의해 동기화됨    프로그램 실행 과정- 전처리기 > 컴파일러 > 어셈블러 > 링커전처리기- C, C++ 에서 #으로 시작하는 지시문, 지시자로 전처리기가 치환함컴파일러에 의한 번역- CPU의 명령어로 번역어셈블러에 의한 바이너리 코드 생성- CPU의 명령어를 바이너리 코드로 번역링커에 의한 연결과 결합- 라이브러리와 결합 프로그램 내장 방식(Stored Progr..