Computer Science
[Operating System] Multi-Level Page Table
[Operating System] Multi-Level Page Table
2025.06.04프로세스가 작으면 프로세스 안의 페이지도 적어 페이지당 하나씩 존재하는 Page Table Entry도 줄어든다.프로세스가 크면 페이지의 크기도 커지고 Page Table Entry도 커진다. 32비트 아키텍처에서는 가상 주소 공간의 최대 크기가 4GB이다.0~3GB까지는 code data stack이 들어간다. 전체가 4GB이고 한 조각은 4KB이니 페이지의 최대 개수는 1,000,000이다. (1M) Page Table Entry도 역시 1,000,000개 들어갈 수 있는데..Page Table도 메모리에 올라가는데, Entry 하나가 4Byte를 차지한다면 Page의 크기는 4096이니 Entry는 총 1024개를 담을 수 있다.하나의 Page로 Page Table을 저장할 수 없다. 총 10..
[Operating System] Demand Paging
[Operating System] Demand Paging
2025.06.03가상 메모리를 구현하는 방법으로는 Paging과 Segmentaion 두 가지가 있다.모두 프로세스를 쪼개서 보조기억장치의 Virtual Address Space에 넣고, 필요한 부분만 가져오는 방식이다. Segmentation은 실행 속도가 느리니 현대 운영체제에서는 Demand Paging 방식을 사용하니.. 가상 메모리를 사용한다고 하면 그냥 Demand Paging 방식을 사용하는구나~ 라고 생각하자. Demand Paging은 실행하는데 필요한 페이지만 메모리에 가져오고 그때그때 필요한 페이지를 동적으로 가져오는 방식으로 작동한다.프로세스마다 Page Table을 만들어 논리적인 순서와 실제 메모리에서의 순서를 매핑하고 프로세스를 구성하는 Page가 현재 메모리에 올라왔는지 아닌지, 올라왔다면..
[Operating System] Paging / Segmentation
[Operating System] Paging / Segmentation
2025.06.03메모리 파티셔닝에서 relocation 없이 Fragment 메모리를 효과적으로 사용하기 위해 Paging 전략이 도입됐다.프로세스를 일정 조각으로 조각내고 메모리를 할당하는 방식으로, 기본 단위로 4KB를 사용한다. 고정 분할 방식에서는 메모리를 일정한 크기로 분할했는데, 이런 컨셉을 페이징에서도 사용한다.다만 페이징에서는 하나의 프로세스가 여러 개의 페이지로 나뉘어서 메모리에 할당된다. 메모리 한 조각은 page frame이고, 그 안에 들어가는 프로세스의 조각을 page라고 부른다. 프로세스도 여러 page로 나뉘어서 할당되는 부분에 집중하자. 프로세스가 연달아서 배치되지 않아도 돼 External Fragment를 고려하지 않아도 된다. Internal Framgent는 여전히 발생할 수..
[Data Communication] 공유기와 네트워크
[Data Communication] 공유기와 네트워크
2025.06.02스위치 - OSI 2계층에서 작동해 Local Area Network 내의 여러 기기들간의 연결을 처리한다. (유니캐스트)라우터 - OSI 3계층에서 작동해 LAN - WAN 간의 연결을 처리한다. 가정용 공유기는 스위치 + 라우터 + 무선AP 역할을 모두 수행하고, 네트워크를 탈 때는 여러 라우터를 거치게 된다. LAN을 구성하는 방식에는 여러 가지가 있다.이더넷 - 유선 통신 방식으로 이더넷 프레임 단위로 데이터를 전송한다. 와이파이 - 무선 통신 방식으로 WI-FI 프레임 단위로 데이터를 전송한다. 무선 통신을 수행할 때는 무선 단말기가 유선 LAN에 접속할 수 있도록 중계해주는 Access Point를 사용한다.즉, 와이파이를 사용하더라도 이더넷에 연결되어야하고, 이더넷을 통해 라우터로 연결..
[UPL] Type System
[UPL] Type System
2025.06.01프로그램은 그냥 문자열일 뿐인고 Parser는 그 문자열을 특정 시각으로 바라보고 AST로 변환한다.인터프리터는 AST로 변환된 프로그램을 바로 Interpret 하고, 컴파일러는 기계어로 컴파일 후 실행한다. Syntax가 올바르다고 모두 올바른 프로그램은 아니다. 모든 프로그래밍 언어에는 Undefined Behaviors가 존재하고, AST로 제대로 변환되더라도 의도하지 않은 실행 결과를 마주할 수 있다.Undefined - 정의하지 않음 Unspec - 기술하지 않았지만 어떻게 실행되든 상관없음 UB의 예시로는.. null값에 대한 dereference, 주소 값 끼리의 대소비교, 파라미터 계산 순서 등이 있다. Semantics를 정의할 때 Inference Rule을 사용하는데, In..
[UPL] MiniC 구현
[UPL] MiniC 구현
2025.05.26Imperative Language는 명령어를 수행할 때 프로그램의 메모리 상태를 변경하는 언어로, Statement를 통해 메모리를 변경한다.C C++ Java Python 모두 Statement를 사용하는 Imperative Language이다. Functional Language는 함수를 값으로 다루는 언어지만 Statement를 가질 수 있다.OCaml은 Statement가 없고 Declaration과 Expression만 가진다. Functional Language와 Imperative Language는 서로 대비되는 개념이 아니고, 공존할 수 있다 (JavaScript) Statement안에 Statement가 위치할 수 있다. Java C 같은 언어에서는 if 구문이 값을 반환하지 않으니 S..
[UPL] Recursion
[UPL] Recursion
2025.05.18함수 몸체에서 자기자신을 직접 호출하는것도 재귀인자기가 부른 함수가 자기를 호출하는것도 재귀라고 할 수 있다. (간접 재귀) 조건 분기문을 추가한 언어인 CFVAE에서는 함수 몸체에서 함수 자신을 호출할 때 아직 자신이 정의되지 않은 상태라 저장소에 들어오지 않았고, 따라서 Recursion이 불가능하다. OCaml처럼 Concrete Syntax에 rec키워드를 추가해 rec가 붙어있으면 재귀호출이 가능한 함수, 붙어있지 않으면 재귀호출이 불가능한 함수로 구분해서 구현할 수 있는 RCFVAE 언어를 정의해보자. 일단 Concrete Syntax 먼저.. 함수를 선언할 때 rec 키워드를 붙일 수 있도록 하자. 기존 함수 정의를 사용할 때, expr1에서 var는 free identifier였지만..
[Operating System] Memory Management
[Operating System] Memory Management
2025.05.17RAID는 Redundant Array of Inexpensive(Independent) Disk의 약자로 저렴한 디스크를 여러개 사용해 품질이 좋은 디스크 하나의 효과를 내는 구성방법이다. 개인용 컴퓨터의 디스크는 비교적 저렴한 디스크를 사용해 용량도 적고 하드웨어 신뢰성도 떨어진다.보통 용량이 큰 디스크는 기업이나 공공기관이 사용한다. RAID가 도입된 시기에는 디스크 용량이 커질수록 가격은 훨씬 더 커졌고, 저용량 디스크를 조합해서 고품질 디스크를 구현하는 RAID 기술이 도입됐다. 그림은 디스크 4개를 조합해 RAID 0 (non-redundant)구조를 구현한 예시이다. strip이라는 정보 단위를 저장하고, 각 strip은 여러 디스크에 분산되어 저장된다. 이렇게 저장하면 디스크 하..
[UPL] Conditional Branch
[UPL] Conditional Branch
2025.05.15expression은 값으로 계산되는 코드조각이고, statement는 프로그램의 메모리를 변환시키는 코드조각이다. expression을 계산할 때는 Store에서 Expression을 받아 계산한 Value를 돌려주고,statement를 계산할 때는 Store를 받아 Statement를 실행하면 새로 업데이트한 Store를 돌려준다. 삼항연산자는 조건분기문의 expression 버전으로, 값으로 계산된다. Concrete Syntax를 정의해보자.기존 언어에서 if - then - else 을 추가하고, 크기 비교 연산자와 논리값을 추가하자. Functional Language처럼 분기를 조작할 때는 expression을 사용한다. if - then - else 구문을 사용할 때 어디까지..
[Operating System] Disk Scheduling
[Operating System] Disk Scheduling
2025.05.13일반적으로 디바이스 스케쥴링은 먼저 온 순서대로 진행하는데, 디스크는 선입선출 방식을 사용하지 않는다. 하나의 surface에는 20~1500개의 트랙이 있고, 디스크가 3장일 때 surface는 6개이다.cylinder는 모든 surface에서 같은 번호로 구성된 트랙의 집합을 의미한다. 그림에서 노란색으로 칠해진 트랙의 일부를 sector라고 부르고, 각 sector에는 checksum을 저장한다.가장자리 쪽의 sector는 중심쪽 sector보다 물리적 크기는 크지만, 각 sector는 같은 크기의 정보를 저장할 수 있다. (각속도 조정)checksum은 디스크에 접근할 때 오류를 계산할 때 사용된다. 디스크가 데이터를 읽을 때, 저장된 checksum과 읽은 데이터의 checksum을 비..
[Operating System] I/O Management
[Operating System] I/O Management
2025.05.11I/O 장치는 프린터, 키보드처럼 사람이 사용하는 장치, 디스크 / 센서 / 모뎀 등 장치들 간 통신을 위해 사용되는 장치로 구분된다.일반적으로 사람이 다루는 장치는 데이터 전송률이 낮고, 장치들 사이의 입출력을 담당하는 장치는 데이터 전송률이 높다. 바이트 단위로 데이터를 주고받는 장치를 문자형 장치, 블럭 단위로 데이터를 주고받는 장치를 블럭 장치라고 부른다. 입출력 장치의 종류는 다양한데.. 운영체제는 모든 장치를 지원해야 한다. 하드디스크에서는 금속 판에 정보가 저장된다. Disk Arm은 금속 판의 중앙부터 가장자리로 이동하며 정보를 읽고, 모터를 통해 움직인다. 디스크 하단에는 컨트롤러 보드가 있고, 컨트롤러 보드에는 여러 레지스터들이 부착되어있다. 운영체제가 장치에 명령을 내리면 ..
[Operating System] File System
[Operating System] File System
2025.05.10파일은 보조 기억 장치에 저장되고 전원이 끊기더라도 지워지지 않는 정보의 저장 단위를 의미한다.사용자가 파일을 만들면 운영체제는 그 정보를 저장하는 자료구조를 운영체제 내부에 만들어 파일과 함께 저장한다. 이 자료구조는 파일을 사용하지 않을 때는 보조 기억 장치에 있다가 파일을 사용할 때는 메모리에 올라온다. 이 자료구조를 File Control Block이라고 부른다.이 자료구조는 파일명, 만들어진 시기, 권한을 가진 사람 등 여러 정보를 포함한다. 프로세스가 만들어질 때 함께 생성되는 PCB와 유사하지만.. PCB는 메인 메모리에서 관리되고 FCB는 보조 기억 장치에 저장된다. 사용자가 파일에 접근하려 할 때, 운영체제는 해당 파일이 존재하는지 확인하고 디스크의 어느 위치에 있는지 확인해야 한다..