출처:https://youtu.be/tYs6q_Lsi_0
운영체제의 핵심부분인 커널과 그 외 부가기능 =OS
리소스는 생성 및 소멸된다.
WINDOWS에의 생성되고 소멸되는 리소스 = 커널 오브젝트
우리가 응용프로그램을 통해서 파일에 리소스를 요구할 수 있으나 파일에 할당된 권한에 따라 OS가
호출을 거부하거나 허용할 수 있다.
os가 알고 있는 정보
-접근정보 EX) rwx
-해당파일의 어디까지 읽었는지 정보(그 이후에 사용자에게 정보를 줌)
-상태정보, 프로세스간 우선순위(프로세스의 경우)
리소스를 생성할 때 그 리소스에 대한 커널 오브젝트가 생성됨.
프로세스 관리 구조체를 본떠서 프로세스의 정보를 받아 커널 오브젝트가 생성됨.
커널 오브젝트의 우선순위를 바꾸고 싶다면 커널 오브젝트에 접근해야 하는데
중요해서 원래 안됨. 그래서 간접적 접근이 가능한데
관련된 시스템 함수가 제공됨. 변경하고 싶은 해당 리소스의 정보를 함수의 인자로 넣어야 하는데
없으니까 핸들정보를 줌, 프로세스 커널 오브젝트의 고유번호를 핸들(번호).
함수 인자에 핸들(번호)을 줌. 리소스 별로 핸들 얻는 방법이 다 다름.
Operation2.exe를 호출
SetPriorityClass 함수로 우선순위 변경 설정
GetCurrentProcess()라는 핸들의 우선순위를 높게(HIGH_PRIORITY_CLASS) 설정한다.
for문의 경우 우선순위가 높은 프로세스에게 우선권을 넘겨줄때 기존의 프로세스는 Running->Blocked 상태가 되기 때문에[sleep(20):20초간 휴식] 기존 프로세스를 Running->Ready상태로 변경시키기 위해 Busywaiting과 위의 for문을 줌.
함수단위로 프로세스의 우선권이 넘어가는 것이 아니라 CPU관점에서 명령어 단위로 우선권이 넘어가게 됨.
시스템 호출 하나당 명령어가 30~40가 될수 도 있음. 위의 체크된 프로스세에서 체크안된 프로세스로 바뀌었다 출력되는 것이 우선순위의 차이로 인한 우선권 변경실행의 모습
'IT > 기타' 카테고리의 다른 글
WINDOWS 10 HOME -> ENTERPRISE (제품키 변경) (0) | 2020.03.07 |
---|---|
우분투 리눅스 노트북 memory(ram) 정보확인 (0) | 2020.03.05 |
Technical Training workshop, Ready for Windows 10 (0) | 2020.03.05 |
windows Architecture 용어. (0) | 2020.03.05 |
birtual box에서 mac catalina 설치 (0) | 2020.02.29 |