전체 글
-
Chapter 1. IntroduceNetwork 2019. 12. 22. 17:53
1. Intro 네트워크는 어떤 상황[오류, 손실]에서도 Request, Response 메시지가 틀림없이 상대에게 넘기는 구조를 가져야 한다. 비유를 들어 용어를 설명하자면 Packet은 소포이며 Switch, Router는 우체국이며 이를 프로토콜이라는 개념을 토대로 패킷을 전달할 것이다. 2. Message 전달 방식 Network에서 메시지 전달 방식에는 Packet Switching과 Circuit Switching 방식이 존재한다. Packet Switching 특정 사용자의 독점을 방지하기 위해 Application단에서 메시지를 Packet 단위로 자른다. 패킷을 분할 했기 때문에 패킷마다 목적지 주소를 싡는다. 패킷을 다음 링크로 전송하기 전에 Sotre 한 뒤 전송하는 Store and..
-
소프트스퀘어드 후기Android 2019. 10. 28. 19:20
안녕하세요 저는 소프트스퀘어드 2기 안드로이드 교육을 수료한 무민입니다. 저는 소프트스퀘어드에서 교육생/맴버스/메이커스를 모두 경험한 사람으로써 저의 개인적인 후기를 말하고 싶어서 글을 써볼까 합니다. ㅎㅎ 1. 교육생 일단 저가 많은 교육업체나 학원등을 다녀봤지만 이 만큼 단 기간에 실력이 업그레이드 되는곳은 소프트스퀘어드 외에는 없다고 생각합니다. 단 수료했을때의 해당되는 내용이고 생각보다 상당히 매주 과제 난이도가 높습니다. 그래서 그런지 저의 개인적인 느낌으로는 과제를 하면 할수록 주차마다 "아 이번주차는 버텼다." 이런생각을 하였습니다. 그런데 그렇게 과제를 하면서 의미없는 시간으로 쓰는게 아닌 정확한 방향성과 의미있는 '삽질'을 할 수 있도록 교육파트 팀장을 비롯한 각 파트별 선배기수들이 도움..
-
Chapter 7. Virtual MemoryOperating System 2019. 8. 16. 21:05
1. 가상메모리란 프로세스의 모든 영역을 한번에 메모리에 올리는것이 아닌, 필요할 때마다 메모리에 올리는 기법이다. 왜냐하면 프로세스는 전체 코드를 '동시에' 참조하는 경우는 드물기 때문이다. 따라서 필요하지 않은 메모리 공간을 실제 물리 메모리에 올리지 않는다. 이렇게 된다면, 프로그램 크기가 메모리보다 커도 동작할 수 있고, 더 많은 프로그램을 동시에 실행할 수 있어 CPU 이용률과 처리율이 증가했다. 하지만 프로그램 코드를 작게 나누면 그 만큼 디스크와의 Swap이 많아지고 I/O 처리에 따른 속도가 느려질 수 있다. 2. Demand Paging 앞에서 가상메모리는 프로세스의 모든 부분을 미리 로드하는것이 아닌, CPU가 실제 인스트럭션을 읽어갈 때마다 페이지가 메모리상에 로드됨을 말했다. Dem..
-
Chapter 6. Main MemoryOperating System 2019. 8. 14. 19:23
1. Background 메인 메모리는 OS영역과 User Process 영역으로 구분된다. 각각의 프로세슨느 독립된 메모리 공간을 갖고, 다른 프로세스의 메모리 공간에 접근할 수 없다. 이를 위해 Base, Limit Register를 사용한다. Base 레지스터는 시작 물리 주소, Limit 레지스터는 프로세스의 크기를 나타내며, 메모리를 참조할 때마다 해당 값이 Base + Limit 레지스터 값을 넘어는지 체크한다. 만약 잘못된 영역을 접근하는 경우 Trap Interrupt를 걸어 오류를 막는다. 2. Address Binding 프로세스 메모리 주소 결정 시기가 언제냐에 따라 3가지로 분류한다. 1. Compile Time 컴파일/링킹하는 과정에서 메모리 주소가 결정된다. 주소 설정이 매우 간..
-
Chapter 5. Synchronization & DeadlocksOperating System 2019. 8. 14. 18:01
1. Synchronization 멀티 프로그래밍에서 공유 데이터에 동시에 접근할 경우 데이터에 일관성이 깨지는 문제가 발생할 수 있다. 한 스레드에서 공유 데이터를 변경하던 도중 Context Swithcing이 발생하여 다른 스레드가 잘못된 공유 데이터를 참조하거나, 중복 업데이트가 일어날 수 있다. 이러한 문제를 해결하기 위해 동기화라는 개념이 나왔다. Requirements 동기화 문제를 해결하기 위해서는 아래 3가지 조건을 모두 만족해야한다. 여기서 말하는 Critical Section은 문제가 발생할 수 있는 코드 영역을 의미한다. 이 영역은 짧을수록 좋다. 이유는 어떤 스레드가 해당 영역의 진입했다면, 다른 스레드는 해당 영역을 진입하지 못하고 Critical Section에 진입한 스레드가..
-
Chapter 4. SchedulingOperating System 2019. 6. 25. 00:42
1. Queue OS는 제한된 Resource를 프로세스들에게 적절히 분배하기 위해 스케줄링을 활용한다. 이때 프로세스들은 PCB 형태로 3가지 큐에 존재한다. Job Queue : 시스템 내에 존재하는 모든 프로세스의 집합 Ready Queue : 메모리에 적재되있고, CPU를 할당 받기 전까지 기다리는 프로세스 집합 Device Queue : Device I/O 작업을 완료할때까지 기다리는 프로세스의 집합 2. Scheduler 1. Long-term Scheduler = Job Scheduler 프로그램을 실행시키고 디스크에서 메모리로 로드할 프로세스를 선택한다. 즉, 프로세스 상태를 New에서 Ready로 바꿀 프로세스를 선택하는것과 동일하다. 이때, 모든 프로세스들을 New에서 Ready로 바꾸..
-
Chapter 3. ThreadOperating System 2019. 6. 24. 23:19
1. Thread란 프로세스는 프로그램을 실제로 실행시킨것으로 '작업의 단위'이다. 반면 스레드는 프로세스 안에서 '실행 단위로'로 실행의 흐름을 제어한다. 이때, 한 프로세스 안에 여러 스레드가 존재할 수 있다. 같은 프로세스에 있는 스레드들은 Code, Data, Files[I/O], Heap 영역을 공유하지만 Register, Stack을 별도로 가진다. 스택은 함수 파라미터, 리턴 주소 값, 지역 변수 등 함수 관련 정보가 담겨있다. 스택을 별도로 가지기 때문에 독립적 함수 호출이 가능하며 이는 독립적 실행 흐름을 가질 수 있다. 레지스터를 별도로 가지는 이유는 스레드마다 어디까지 인스트럭션을 수행 했는지 나타내는 PC를 저장하기 위해서이다. 따라서 Context Swiching시 다음 인스트럭션..
-
Chapter 2. ProcessOperating System 2019. 6. 24. 23:01
1. Process Memory Program : 프로그램 실행 '설명서'로, System Resource를 할당 받지 못한 상태이다. Process : 프로그램을 실제로 '실행' 한 것으로, System Resource를 확보 한 상태이다. Code : 프로그램 코드, 기계어 등이 포함된다. 컴파일시 영역 크기가 결정된다. Data : 전역변수, static 변수 등이 포함된다. 컴파일시 영역 크기가 결정된다. Stack : 지역변수, 함수 호출 주소, 파라미터 등 '함수'에 필요한 정보가 포함된다. LIFO 구조로, 함수를 호출할 때 필요한 정보를 쌓고 함수가 끝나면 해당 영역을 Pop한다. 컴파일시 영역 크기가 결정되며, 스택 영역을 벗어나면 Stack Overflow 에러가 발생한다. Heap :..