본문 바로가기

program6

[Program] (윈도우 시스템 프로그래밍) 프로세스의 스케줄링 / 컨텍스트 스위칭 프로세스 -> 메인 메모리에 이동하여 실행중인 프로그램 (일반적인 정의) 범위 는 메모리구조 + 레지스터 이다. 메모리 구조 [Code영역][Data영역][Heap영역 ~ Stack영역] 이렇게 낮은주소~높은주소 순서로 되어있다. code : 명령어집합 data : 전역변수, static변수 heap : 동적으로 프로그래머가 할당 stack : 지역변수, 함수인자 운영체제별로 다른데, 가상메모리를 4gb 정도 할당받는다. 4gb 가 메모리에 다 올라가는 것이 아니라, 페이징기법으로 사용하는 공간만 올라간다고 한다. Context switching A, B 프로세스가 동시에 실행될 때 A가 먼저 우선순위를 B 에게 건네줄 때, context switching 이 일어난다. 레지스터셋을 저장해놨다가 (메모리.. 2020. 12. 11.
[Program] (윈도우 시스템 프로그래밍) 메모리 참조 명령어 디자인 LOAD destination(register) , source(memory address) STORE source(register), destination(memory address) 이렇게 명령어를 디자인한다고 하자. LOAD 명령어는 메모리주소에서 레지스터로 값을 불러온다. 반대로 STORE 명령어는 레지스터를 메모리주소에 값을 저장한다. 예제 int a,b 를 선언하고, c 에 둘을 더한 값들을 저장하는 예제이다. LOAD 명령어로 각각의 레지스터에 값을 저장하고, 레지스터에 더하기연산값을 저장한뒤, STORE 명령어로 c 의 주소 (0x30) 에 결과를 저장한다. 물론 INTEL ASSEMBLY 에서는 mov rax, [rbp-0x30] ; mov rbx, [rbp-0x20] ; add rax,.. 2020. 10. 22.