시스템프로그래밍 (13) 썸네일형 리스트형 [시스템 프로그래밍] 프로세스 환경변수 프로세스 별로 독립적인 메모리 공간이 존재한다 SetEnvironmentVariable(“bbb”,” —-“) “bbb”=key “—-“=value GetEnvironmentVariable(“kkk”, , ,) “kkk”값에대한 정보를 얻겠다. [시스템 프로그래밍]signaled vs non-signaled 커널 오브젝트의 상태 상태: 리소스의 현재 상황을 알리기 위함. signaled, non-signaled 상태 존재. ex.부모 프로세스가 자식 프로세스를 생성했다. 부모 프로세스가 자식 프로세스의 커널 오브젝트를 보니 non-signaled 상태이다. “아 실행중이구나!” 상태관찰 시나리오 부모 프로세스가 자식프로세스 생성->핸들:7 ->자식프로세스의 커널오브젝트는 7 ->부모프로세스가 자식프로세스는 실행중인지 멈췄는지 궁금->WaitForSingleObject(7)함수 호출->7을 의미하는 커널오브젝트의 상태를 알수있다 -> 상태가 signaled 면 바로반환, non-signaled이면 blocking상태. 멈춘상태 즉, WaitForSingleObject()함수는 signal되기를 기다리는 상태의.. [시스템 프로그래밍] 7장 프로세스간 통신의 의미/메일슬롯 방식의 IPC section 1~2 IPC 프로세스간 통신 -프로세스간 데이터 송수신 ->메모리 공유. a process [메모리] b process OS는 a프로세스와 b프로세스의 메모리를 독립시켜서 서로의 메모리에 접근이 불가능하도록 하였다. 따라서 공유 메모리공간이 필요하다 메일슬롯 -receiver process 가 [1.우체통을 만든다 2.주소 만든다]-> sender process는 주소로 데이터를 보낸다. -주소가 같은 3개의 receiver process가 있다면? sender process가 주소로 데이터를 한번 보내면 3개의 우체통으로 데이터 도착 예제 [시스템 프로그래밍] 6장 커널 오브젝트와 오브젝트 핸들 section1: 커널 오브젝트에 대한 이해 커널 : 모든 운영체제가 가지고 있는 핵심. 운영체제= 커널과 비슷 커널 오브젝트: 커널에 의해 관리되는 리소스정보를 담고 있는 데이터 블록. (프로세스 관리 정보가 들어가있다) 리소스:운영체제에 의해 생성 및 소멸하는 것(배열[리소스]을 선언하면 프로그램이 배열을 관리하고 삭제. 배열도 리소스 개념. 보통 파일이 대부분) 커널오브젝트에는 우선순위가 있다. 우선순위 변경 원함->프로그래머가 직접 접근 불가->간접접근=어떤 프로세스 커널 오브젝트의 핸들(숫자)을 통해서 우선순위 높이도록 한다. 예제 6-1,6-2 설명busy waitting = 출력결과를 관찰하기 빨라서 어려움 ->천천히 출력하도록 하는것. sleep 함수와 비슷 차이점은 ready—busy w.. [시스템 프로그래밍] 6장 프로그래밍을 통한 프로세스의 생성 출처: 뇌를 자극하는 윈도우즈 시스템프로그래밍 [시스템 프로그래밍] 5장 프로세스 생성과 소멸 프로세스의 이해 프로세스란? -[메인 메모리로 이동하여] 실행중인 프로그램 ->일반적인 정의 프로세스의 범위 -메모리구조 + 레지스터 set -프로세스 별 독립적인 대상은 프로세스의 범주에 포함시킬 수 있다. 프로세스 스케쥴러 프로세스 스케줄러 기능 -둘 이상의 프로세스가 적절히 실행되도록 컨트롤 스케줄링 방법 -스케줄링 알고리즘에 따라 다양함 프로세스 상태 -running=cpu에 의해 실행중인 것 -ready= running하고싶은상태= 스케줄러가 선택당하길 기대하는 상태 -blocked= cpu가 크게 요구되지않는 =i/o연산(ex. mp3에서 하드디스크에 있는 노래를 플레이 리스트로 로드) 을 하는 장소 [ => 그다음 ready 상태로 감 ] 컨텍스트 스위칭 -A process 에 저장된 레지스.. [시스템 프로그래밍]4장 direct모드와 , indirect모드 출처:뇌를 자극하는 윈도우즈 시스템 프로그래밍 [시스템 프로그래밍] 4장 load&store 명령어 디자인 Q:연산결과를 레지스터 말고, 한번에 메모리에 저장하면 안될까? A:cisk의 경우에는 연산결과를 메모리에 저장할 수 있겠지만 , risk는 가능하지 않다. (risk의 r은 reduce임을 기억하자! 속도를 높이기 위해선..) 그래서 [메모리 데이터 -> register] 에 저장하는 과정이 필요하다. 메모리(ex.0x10번지)값을 레지스터에 불러옴 = load 레지스터에서 메모리(ex.0x10번지)로 저장=store 명령어의 제한 -사칙연산의 피연산자는 숫자 or 레지스터, 연산결과는 레지스터에 저장 -레지스터를 통해서 모든 연산을 진행하도록 디자인. ex. int a=10; int b=20; int c; c=a+b; load r1, 0x10 load r2, 0x20 add c a b X!!!! 레지.. 이전 1 2 다음