no image
4. Paging
Physical memory에 virtual memory를 할당시켜 보려는 노력을 계속했었는데, contiguous한 성질 때문에, fragmentation이라는 한계에 부딛히게 된다. 이를 해결하고자 도입한 것이 paging이다. 아이디어는 간단하다. 메모리를 fixed-sized page로 잘게 나눠버리는 것이다. (보통 4KB) Translation (VA->PA) 방법은 기존과 동일하다. Logical address에서 일정 top bit로 table에 저장되어 있는 내용을 참고해 physical frame number를 찾고, offset만큼 이동해 데이터를 참조하게 된다. 실제 동작은 다음처럼 진행된다. Page Table Mapping 정보가 저장된 table이다. 프로세스마다 1개씩 가지게..
2023.12.05
no image
3. Memory Virtualization
하나의 프로그램만 돌린다면 메모리 가상화는 필요없다. 여러 프로그램을 동시에 돌리기 위해서 우리는 메모리 가상화를 사용한다. 멀티프로그래밍의 목표는 다음과 같다. Transparency: 프로세스는 메모리가 공유되고 있다는 것을 몰라야 함, 항상 사용 가능해야 함 Protection: OS나 다른 프로세스의 메모리 침범할 수 없음 Efficiency: 메모리 낭비가 없어야 함 Sharing: 주소 공간 공유할 수 있음 Memory address space OS가 프로세스에게 private한 address space를 줘야 하는데, 한 가지 문제가 있다. 메모리 공간이 다이나믹하다는 것이다. 실제로 메모리는 다음의 구조를 가진다. Code 영역은 static하다. 반면에, Stack이나 Heap은 dyna..
2023.12.01
no image
2. CPU Virtualization
CPU virtualization에는 크게 2가지 개념이 중요하다. 1번 포스트에서 다루었던, context switch랑 scheduler(스케쥴러)이다. Context switch는 방법론적인거고 scheduler는 정책적인 내용이다. 간단하게 자주 사용하는 용어부터 알아본다. Workload: 해야되는 프로세스(어플리케이션)의 양 Scheduler: ready process를 실행할 타이밍 결정하는 방법 Metric: 평가방법 스케쥴링의 목표(=평가 요소)는 다음과 같다. Turnaround time completion_time - arrival_time (minimize) Response time initial_schedule_time - arrival_time (minimize) Throughp..
2023.11.27
no image
1. Introduction
Operating system OS의 역할 중 중요한 3가지는 다음과 같다. Virtualization Concurrency Persistence Virtualization Process 프로세스는 execution stream with states이다. State에는 코드에 영향을 줄 수 있는 모든 자원이 포함된다. 가령 레지스터나 힙, 스택, 열린 파일 등이 있다. 프로그램 vs 프로세스 프로그램과 프로세스는 다른 개념이다. 프로그램은 정적인 코드와 데이터이며, 프로세스는 이런 프로그램의 dynamic instance이다. 쓰레드 vs 프로세스 쓰레드와 프로세스는 비슷한 개념이다. 쉽게 설명하자면, 쓰레드는 lightweight process이며, 하나의 프로세스는 여러개의 쓰레드를 사용할 수 있다...
2023.11.21
no image
[CHI 2001, Sensetable] Sensetable: A Wireless Object Tracking Platform for Tangible User Interfaces
오늘 소개할 논문은 Sensetable입니다. Humac Computer Interaction(HCI)의 Tangible User Inteface(TUI) 분야의 연구로, 과학관 같은 곳에서 프로젝트로 상호작용하는 것을 구현하였습니다. 기존에는 컴퓨터 비전 기술이나 wire를 puck(상호작용에 사용되는 물체)에 연결하여 TUI를 구현하였는데, 인식이 부정확하며 느린 반응속도를 보이거나, wire를 사용함으로써 거추장스러워지는 단점을 가지고 있었습니다. 본 연구에서는 이 문제를 해결하고자, 전자기를 이용해 물체를 인식하며 dial이나 modifier를 쉽게 장착할 수 있게 만들어, 보다 다양한 상호작용을 할 수 있게 된 것이 특징입니다. Introduction 기존 연구의 한계는 컴퓨터 비전 기술을 활용..
2023.11.18
10. Malware
Malware에는 다음의 타입이 있습니다. Infectious viruses, worms Concealment Trojan horses, logic bombs, rootkits Strealing information Spyware, keyloggers, screen scrapers For profit Dialers, scarewares, ransomware As platform for other attacks Botnets, backdoors Trojan horse 정상적인 SW처럼 동작하면서 정보를 훔치거나 시스템을 다운시킵니다. 트리거는 유저의 특정 행동입니다. Backdoor 시스템에 비밀 entry point를 만들어둡니다. Logic Bomb 합법적인 프로그램에 설치되어 있습니다. 특정 조건을 ..
2023.06.14
no image
9. Program Analysis
SW Vulnerability 분석에 관한 포스팅이다. 일반적으로 프로그램은 크고 복잡하기 때문에 자동으로 검출하는 것이 목표이다. 검출하고자 하는 취약점은 Syntactic과 Semantic이다. Syntactic Semantic buffer overflow integer overflow etc. login vulnerabilities - memory leak - race condition Bug를 찾기 위해서 분석하기도 하며, 다양한 program representation에서 수행된다. Static program analysis와 Dynamic program analysis가 있다. Program representations Source code Binary code Intermediate repr..
2023.06.14
no image
8. Software Vulnerabilities
Program이 secure하다는 것은 무엇을 의미할까요? Software가 의도한 대로 동작할 때, program이 secure하다고 볼 수 있습니다. 그런 의미에서 SW는 보안에서 중요한 역할을 합니다. 또한 insecurity의 대상이 될 수 있습니다. SW는 공격자로부터 input을 받을 때 문제가 될 수 있습니다. 취약점이 노출되면, 공격자는 program의 availability, integrity, confidentiality에 피해를 줄 수 있습니다. 또한 다른 user의 권한을 사용해 access control policy를 위반하는 행위를 할 수 있습니다. Attacks exploiting SW vulnerabilities 취약점은 Entry points로 이용될 수 있습니다. 다음의 ..
2023.06.14
no image
7. Database Security
OWASP Top 10 Vulnerabiliies Broken access control Cryptographic failures Injection Insecure design Security misconfiguration Vulnerable and outdated components Identification and authentication failures Software and data integrity failures Software logging and monitoring Server Side Request Forgery(SSRF) 대표적으로 이런 보안 취약점이 있다. Database Security DB 보안이 DB에 대한 의존도 증가에도 적절하게 합을 맞추지 못하는 이유는 다음과 같다. DB..
2023.06.13