레지스터는 몇 비트로 구성할 것인가?
- 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 |