본문 바로가기

윤성우 윈도우 시스템 프로그래밍14

[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.
[Programming] (윈도우 시스템 프로그래밍) CPU 명령어 구조 및 명령어 디자인 CPU 명령어 구조 및 명령어 디자인 명령어에는 일을 시키기 위한 기본정보가 다 담겨있다 연산자, 저장소, 피연산자 1, 피연산자 2 N 비트 시스템 = 레지스터길이 N 비트 = 명령어 길이 N 비트 example : 사칙연산 명령어 -예약 : 따로 예약된 2비트 -연산자 : 어떤 연산을 할것인지 나타내는 3bit example : 덧셈 : ADD -> 001 뺄셈 : SUB -> 010 곱셈 : MUL -> 011 나눗셈 : DIV -> 100 -저장소 : 연산 결과를 저장하는 3bit ( 레지스터로 제한 ) example : r1 - > 001, r2 -> 002 ... -피연산자 1,2 : 연산할 값 4bit ( 레지스터와 숫자 둘 다 가능 ) 4번째 비트 (X 표시), 0 이면 레지스터로, 1 이.. 2020. 8. 22.
[Programming] (윈도우 시스템 프로그래밍) 컴퓨터 시스템 디자인/레지스터 디자인 컴퓨터 시스템 디자인 CPU 는 종류가 많고(x64,arm,risc-v,mips), 표준이 없다.(CISC,RISC,VLIW 등 다양한 architecture 종류) 그래픽카드도 CPU 라고 할 수 있다. 다만 CPU 와 달리 GPU(Graphic Processing Unit) 라고 부르는데, GPU 는 CPU 와 비슷하게 연산을 하지만 그래픽 처리에 극히 제한되어있다. example : GPU 디자인 GPU 를 디자인할려면 H/W 전문가 그래픽알고리즘 전문가 INTERFACE 전문가 프로그래머 이런 사람들이 모여서 GPU 를 만든다. H/W 전문가 > LOGIC전문가 > ASIC 전문가, 우리나라에서는 ASIC 전문가가 주로 참여한다. ASIC 는 C 와 비슷하고, ASIC 는 논리게이트로 변환된다. .. 2020. 8. 17.