Computer Science
[Data Communication] Point to Point Protocol / 3G
[Data Communication] Point to Point Protocol / 3G
2025.06.17PPP는 2계층에서 동작하는 직접 연결용 프로토콜으로 말 그대로 두 지점 사이를 연결한다. Ethernet은 여러 장치가 공유하는 브로드캐스트 기반 LAN이고, PPP는 1:1 직렬 연결을 수행한다. PPP는 MAC 주소가 필요 없고, Ethernet은 전송만 하지만 PPP는 전송, 인증, 압축, 암호화 등을 모두 수행한다. Ethernet은 LAN 내부에서 쓰이고, 공유기가 WAN과 연결해서 ISP와 연결되는 경계선 역할을 수행한다면 PPP는 컴퓨터 하나가 직접 ISP 장비와 연결한다.Ethernet도 없고 MAC 주소도 없고 DHCP도 안 되는 환경에서 IP를 사용해 1:1 연결을 처리할 수 있다. 1:1 직렬 연결이 필요한 경우가 많이 없고, Ethernet MAC DHCP 기술 등 다양한 대안..
[Data Communication] Media Access Control과 Ethernet
[Data Communication] Media Access Control과 Ethernet
2025.06.12Media는 데이터가 흘러가는 통로로, 통신할 때 사용하는 물리적인 경로를 의미한다.여러 사람이 동시에 통신 매체를 사용하면 충돌이 발생할 수 있으니 적절한 제어가 필요하다. 시간을 나눠서 쓰는 TDMA 주파수를 나눠서 쓰는 FDMA코드를 나눠서 쓰는 CDMA 등 여러 Multiple Access기술을 사용하는데, 이 부분은 Multiplexing과는 다르다. Multiple Access는 여러 송신자가 같은 매체를 나눠서 사용하는 방식이고, Multiplexing은 여러 신호를 하나로 합쳐서 전송하는 기술이다. (송신자는 한명, 송신 데이터가 여러개) Pure ALOHA 프로토콜은 가장 초기 형태의 무선 통신 프로토콜으로, 누가 먼저 쓰는지 정하지 말고 그냥 보내는 Random Access 통신..
[Data Communication] 에러 제어와 ARQ
[Data Communication] 에러 제어와 ARQ
2025.06.11디지털 데이터 전송 중 노이즈 등으로 비트가 변하는 오류가 발생할 수 있다. Parity Bit 데이터에 패리티 비트를 1비트 추가해서 전체 1의 개수를 짝수나 홀수로 맞춘다. 단일 비트 오류는 검출할 수 있지만, 오류 수정은 안되고 짝수 개의 비트 오류는 검출할 수 없다. Checksum데이터 블럭의 합을 사용해 오류를 검출한다.데이터를 여러 블럭으로 나눠 합계를 계산하고, 이 합의 보수를 체크섬으로 전송한다. 수신 측은 받은 데이터 + 체크섬이 0이 되는지 확인하는 방식이다. 빠르지만 역시 오류 수정은 불가능함 CRC (Cyclic Redundancy Check)다항식 데이터를 이진 다항식으로 바라보고 미리 정해진 Generator Polynominal으로 연산.나머지(R)가 CRC 코드이고, 수..
[Operating System] Process Scheduling
[Operating System] Process Scheduling
2025.06.09스케쥴링 방식은 스케쥴러가 실행되는 시간 간격에 따라 Long-Term / Medium-Term / Short-Term 세 가지로 구분된다. 지금까지 계속 언급하던 Process Scheduling은 모두 Short-Term Scheduling을 의미하고, I/O 장치를 대상으로 하는 스케쥴링은 I/O Scheduling을 의미한다. Long-Term Scheduling은 생성은 됐지만 아직 메모리에 올라오지 않은 New 프로세스에 대해 수행된다. 아직 가상 주소 공간에 있는 프로세스 중 메모리에 들어갈 프로세스를 선별하는 작업이다. Medium-Term Scheduling은 메모리에 올라왔다가 일시적으로 보조기억장치로 Swap-Out 되는 프로세스들에 대해 어떤 프로세스를 다시 메모리에 올릴..
[Operating System] Thrasing
[Operating System] Thrasing
2025.06.08Degree of Multiprogramming은 메모리에 들어온 프로세스의 수를 의미한다. (프로세스의 일부 포함)당연히 가상 메모리 방식을 사용하면 Degree of Multiprogramming이 커진다. Demand Paging 방식을 사용하면 메모리에 프로세스가 더 많이 들어오면서 CPU의 활용도가 늘어난다. Degree of Multiprogramming이 어느정도 증가하면 CPU 활용도가 오히려 더 낮아진다. CPU 활용도가 늘어나지 않으니 운영체제는 CPU가 할 일이 없다고 판단해 New 상태에 있는 프로세스를 메모리에 넣어준다.메모리의 용량은 한정되어있는데, 프로세스의 수가 계속해서 증가하면 한 프로세스가 차지하는 Page 수가 줄어들게 된다. 프로그램을 제대로 실행하려면 프로..
[Operating System] Page Replacement
[Operating System] Page Replacement
2025.06.05Demand Paging 방식에서는 필요한 Page를 동적으로 메모리로 가져온다. 메모리에 빈 자리가 없다면 메모리에 있는 Page를 보조기억장치로 보내고 다른 Page를 메모리로 가져오는데, 이 작업을 Page Replacement 라고 부른다. Page Replacement에서는 메모리에서 Swap Out 할 Page를 결정하는 작업이 가장 중요하다. 이 작업은 운영체제가 알아서 결정하는데, 보통 가까운 미래에 사용될 것 같은 Page는 그대로 두고 나중에 사용될 것 같은 메모리는 보조기억장치로 옮기는 방식을 사용한다. Reference String은 프로그램이 실행되면서 접근하는 주소들의 Page번호만 시간 순서대로 나열한 부분이다. 맨 처음 7번 Page를 Access 해야 하는데 메모리에는..
[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..