본문 바로가기
운영체제

뇌를자극하는윈도우즈시스템프로그래밍

by kcj3054 2022. 6. 22.

레지스터는 몇 비트로 구성할 것인가?

  • Ans : 보통 n비트 시스템이면, 레지스터도 n비트이다. 그렇게해야지 한번에 처리할 수 있는 데이티가 맞춰지기 때문이다.

포인터는 크면 클 수록 좋다.

  • 버스가 한번에 이동할 수 있는 크기내에 클 수록 좋은 것이다. 버스는 32bit를 한번에 이동시킬 수 있는데 포인터는 64면 2번을 이동해야하새 비효율적.

    • 레지스터 용도를 정한다 왜? 명령어가 단순해지고, 목적지 정해져서 속도도 빨라진다.

명령어를 실행하는 단계

  • fetch -> decode -> execution
    1)메모리에 있는 명령을 fect해서 
    2)io버스를 타고 cpu로 들어가는데 
    3) 레지스터에 들어 가 있다가 
    컨트롤 유닛이 실행 가능할 때 명령을 가지고
    와서 decode한후
    4) ALU가 execution을 한다. 
  • 레지스터는 임시 저장소이다. CPU를 통해 데이터를 들어왔다가 나갈 때 무조건 레지스터를 통해야한다. 고속도로의 휴계소느낌이다..

프로세스의 생성과 소멸

프로세스의 이해 :

  • 메인 메모리로 이동하여 실행중인 프로그램
  • 프로세스별 범주는 프로세스별로 할당 받는 1리소스다. (메모리 구조 + 레지스터 SET) 가상 메모리 공간도 포함된다.

context switching

  • A와 B프로세스가 있을 때 A에 해당하는 연산을 하려고 레지스터SET에 명령어 들을 쓰고 있다가, B라는 프로세스를 실행해야한다면 A프로세스에 대한 연산들은 다른 곳에 저장된다. 이러한 것을 context switching이라고한다....

  • 프로세스 중에서는 레지스터 set을 여러개 들고 있다. 레지스터 set이 A, B, C가 있다고할 때 1번프로세스에게 A를 할당 2번 프로세스에게 B를 할당.. 이렇게 하면 context switching이 일어나면 레지스터 set을 바꿀 필요가 없다. (나만의 레짓스터set이있어서_ 멀티스레딩환경에서 이렇게 해서 성능향상이 일어난다.

[프로세스와 스케쥴러]

  • cpu입장에서는 스케쥴러도 하나의 프로세스이다.그래서 스케쥴러가 일을 많이하면 결과적으로 성능에 좋지 않다........

[프로세스 상태]

  • i / o연산은 cpu에 의존적이지않다. ALU연산은 CPU에 의존적이다. 그래서 두가지 연산을 병행할 수 있다. running상태에 있다가 io가 되면 cpu가 필요없으니 잠시 빠져있어도된다. (blocked 상태로 변한다)
1. ready
처음 프로세스들은 바로 running 상태로 갈 수 없다.
read상태로 있다가 cpu 스케쥴러에 의해서 running
상태로 올라간다. 

2. running
실행중인 프로그램 만약 싱글 코어인상태에서
하나의 프로세스가 running이면 다른 프로세스는
올라올 수 없다. 

3.   blocked
io연산일 경우 blocked로 오는데 io연산이 끝나면
다시 ready상태로온다. 

4. E

커널 오브젝트와 오브젝트 핸들...

  • 커널 오브젝트 : 커널에 의해 관리되는 리소스(윈도우에의해 생성 되고 소멸되는 것) 정보를 담고 ㅇ있는 데이터 블록,,, 커널(os가 가지고 ㅇ있는 핵심부분)

[일반 os vs 리얼타임 os차이점 : ]

  • 두가지를 가르는 조건은 스케쥴러가 어떻게 동작하는 지에 따라있다.
  • 차이는 속도가아니고, 응답성이다.
  • 시스템 관점에서는 타임슬라이스는 초가아니라 클럭이다.
  • 일반 os는 타임슬라이스가 길지만, 리얼타임os는 타임슬라이스가 짧다.

===============================

[선점형 os, 비선점형 os]

  • 비선점은 다른 process를 밀어내지않는다, 선점은 밀어낸다 그래서 비선점은 보통 스케쥴러가 할 것이 많지않다.
  • 스케쥴러가 프로세스 실행에 많이 관여하는 것이 선점, 그렇지 않은 것이 비선점.

    [스케쥴링 알고리즘]

  • 스케쥴링은 평등과 특권이 공존한다. 평등은 동일 우선순위일 때인데 우선순위가 동일하면 라운드 로빈기반으로 동작.
  • 높은 우선순위가 있으면 그것부터 동작.
  • 그럼 낮은 우선순위는 동작을 하지못하는가? 그렇지않다 IO가 발생하면 해당 프로세스는 BLOCKED 상태로 변하고 그렇게 높은 우선순위들이 다 blocked로 빠지면 낮은 우선순위 프로세스들이 실행된다.

인코딩 :

  • 하나의 데이터를 다양한 형식으로 변환해서 압축하는 것.

utf -8 : unicode 문자집합을 사용 + 인코딩 방식

  • 영문 : 1바이트, 한글 : 3바이트..

    UTF - 16 ENCODING :

  • 대부분의 문자를 2바이트로, 한글, 영문 (2바이트) BMP까지는 2바이트 그 다음은 4바이트

CP(CODE PAGE)949 : (WINDOWS에서 사용)

  • 인코딩방식, 문자집합 두가지를 같이 사용한다.
  • 한글(2바이트)은 KS-X-1001.
  • 로마(1바이트)는 KS-X-1003.

=============================

MBCS VS WBCS

MBCS

  • CHAR
  • 개별 문자를 다수의 바이트로 표현한 문자 셋

WBCS(wide byte char set)

  • UTF - 16
  • WCHAR

'운영체제' 카테고리의 다른 글

Multiprocessing vs Threading vs AsyncIO  (0) 2022.06.22
Blocking vs Non-Blocking I / O  (0) 2022.06.22
What Is Concurrency(동시성 vs 병렬성)  (0) 2022.06.22
paging, memory  (0) 2022.06.11
자네 thread safe 한가?  (0) 2021.12.02