load eax, 0x0100 이런 명령어는 100이라는 주소가 너무 커서 피연산자 8bit로 표현이 불가하다. 그래서
다른 방법을 사용하는데
mul r0, 4, 4
mul r1, 4, 4
mul r2, r0, r1 //256(0x100)
store r2, 0x30(메모리 주소)
load r1, [0x30] //indirect 모드로 0x30 주소에 있는 값의 주소로 가서(0x100) 값을 가져온다.
프로세스 란 단지 메모리에 로딩된 실행중인 프로그램이 완벽한 설명은 아니며
프로세스 가상메모리 + 레지스터 가 더 좋은 설명이다.
프로세스에 종속적인 레지스터가 있기 때문인데 A라는 프로세스가 실행중인데 B라는 프로세스가 실행 되어야 한다면
A프로세스에서 사용중이던 레지스터들을 다른 메모리에 저장후 다시 B프로세스의 레지스터를 불러와야 한다. 명칭은 Context Switching이라고 한다.
프로세스는 ready - running - blocked 이 있는데
~.exe 를 더블클릭했다고 가정 했을때 스케쥴러에 의해 ready에 가고 조건이되면 running 에 간다. running 중인데 다른 프로세스가 ready에 있다면 running 중인 프로세스는 ready 에 가고 ready에 있는 프로세스가 running으로 갈수도 있다.
또한 running 중인데 i/o가 발생하는 작업(hdd에서 메모리로 로딩 or etc...)이 있을 경우 blocked로 간다 작업이 끝나면 ready로 간다.
'프로그래밍 > 위도우 시스템' 카테고리의 다른 글
Win System Programming (0) | 2020.02.25 |
---|---|
Win System Programming (0) | 2020.02.24 |
Win System Programming (0) | 2020.02.22 |
Win System Programming (0) | 2020.02.21 |
Win System Programming (0) | 2020.02.20 |