본문 바로가기

Publivate

(217)
04. Process Management (2/2), 05. CPU Scheduling (1/3) 1. 자원의 공유: 자식이 부모를 그대로 copy하기 때문에 메모리 낭비가 될 수 있음 -> 몇몇 OS에서는 일단 copy하지 않고 공유하고 있음-> 내용이 달라질 때까지 기다림 (Copy-on-Write, COW) 2. fork() 시스템 콜: fork() 수행 시 반환값으로 id를 반환함, fork() 수행한 시점에서 시작함 (Program Counter까지 복사됐기 때문에) 가. id가 0일 경우, 자식나. id가 0이 아닐 경우, 부모 3. exec() 시스템 콜-> execlp(): 인자로 넘겨진 새로운 프로그램을 실행 (일반적으로 자식에게 새로운 프로그램을 덮어씌울 때 사용) 4. wait() 시스템 콜: 호출한 부모는 sleep 상태(block 상태)로 만들고, 자식이 종료할 때까지 기다림 ..
04. Process Management (1/2) 1. 프로세스 생성가. 주체: 부모 프로세스가 자식 프로세스를 생성 (방법은 복제 생성) 나. 구조: 계층 구조(트리)다. 자원: 운영체제로 받고, 부모와 공유한다.1) 자원 공유: 부모와 자식이 공유하는 모델과 공유하지 않는 모델이 있다.라. 수행(Execution): 부모와 자식이 공존하는 모델과 부모가 자식이 종료할 때까지 기다리는 모델이 있음마. 복제법: 자식이 부모 공간의 복사함 (복제한 곳을 새로운 프로그램으로 덮어쓸 수도 있음)ex) 1) fork() 시스템 콜을 활용해 새로운 프로세스를 생성2) exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림3-1) 자발적으로 exit() 시스템 콜을 통해 종료시킴가) 자식이 부모에게 데이터를 보냄(자식이 wait 시스템 콜을 통해서)3-2)..
03. Process (2/3), (3/3) 1. Thread: CPU를 이용하는 기본 단위-> 같은 작업을 하는 새로운 프로세스를 만들 경우, 프로세스를 만들기 위한 여러 가지 것들이 중복을 필요하는 문제가 발생-> Thead를 활용하면 Thread에 필요한 부분만 추가로 만들면 됨가. 구성 1) 공유하지 않는 부분(thread 생성 때마다 독립적으로 생기는 부분) 가) program counter나) register set다) stack space2) 공유하는 부분가) code section나) data section다) OS resource나. 특징 1) 다중 스레드로 구성하면 한 스레드가 blocked(wait) 상태일 동안 다른 스레드가 running 상태가 되어 빠르게 처리할 수 있음2) 동일한 일을 수행할 때, 다중 스레드가 협력하여 ..
Head First Design Pattern 01일차 (Strategy Pattern) Strategy Pattern: 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 한다. 이 패턴을 사용하면, 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 정의를 보면 이해하기가 어렵다.. 1. 초기 모습 가. 오리 클래스가 존재하고, 공통 행동으로 보여주기, 수영하기, 울기 등이 메소드로 구현되어 있다.나. 특정 오리 클래스를 만들어서 상속 받은 뒤 필요한 부분을 오버라이딩한다.2. 문제: 오리들이 날 수 있게 되어서 날기 라는 메소드를 추가하고 싶다.가. 해결1: 오리 클래스에 날기 라는 메소드를 추가한다, 즉 모든 오리 클래스가 날 수 있게 된다. -> 어떤 오리는 날지 않을 수 있고 나는 모습은 변할 수 있다. 이럴 경우, 일일이 자식 클래스를 확인해서..
03. Process (1/3) 1. Process: 실행 중인 프로그램가. 프로세스의 문맥(Context) - 특정한 시점을 놓고 봤을 때, 어느 것을 수행하는 지 1) CPU 수행 상태를 나타내는 하드웨어 문맥: 레지스터가 어떤 값을 가지고 있고 PC가 어디인지 가) Program Counter나) 각종 register 2) 프로세스의 주소 공간: 어떤 영역에 있는가 가) code나) data다) stack 3) 프로세스 관련 커널 자료 구조 가) PCB(Process Control Block): 프로세스가 시작할 때마다 프로그램의 상태를 알려주는 자료구조 나) Kernel stack: 프로세스가 운영체제의 커널의 함수를 수행하는 공간 (유저 프로그램의 스택과 유사) 2. 프로세스의 상태가. Running: CPU를 잡고 instr..
[리뷰] 사피엔스, 유발 하라리 사피엔스국내도서저자 : 유발 하라리(Yuval Noah Harari) / 조현욱역출판 : 김영사 2015.11.23상세보기재미있다. 한 때 베스트셀러였는데, 늦게나마 읽게 되었다. 조금 과장해서 인간에 대한 모든 것을 담고 있는 책이라고 하고 싶다. 과학, 사회, 역사 등등 모든 관점에서 최초의 인간에서 부터 미래의 인간까지 모든 면을 다루고 있다. 아무래도 미래의 인간은 상상이고 분량이 적으나,농경사회부터 시작해 제국사회, 현대사회에 이르기까지에 대한 내용들은 정말 많은 것을 배울 수 있었다. 수렵채집인으로서의 삶.. 우리가 말하는 농업혁명은 사실 인간이 자연에 길들여진 것이라는 이야기,더 발전했던 동양이 서양에 뒤쳐진 이유 등 여러가지 흥미로운 이야기들을 해준다. 어떤 사람들은 잘못된 이야기들이 있다..
[리뷰] 소프트웨어 장인, 산드로 만쿠소 소프트웨어 장인국내도서저자 : 산드로 만쿠소 / 권오인역출판 : 길벗 2015.09.25상세보기꽤 유명한 서적 중 하나인데, 소프트웨어 장인이 되기 위해 필요한 것들을 저자의 경험을 살려서 쓴 책이다. 번역 수준은 괜찮은 편이나, 가끔 오타인 지, 번역 실수인 지 모를 문장들이 좀 있다. (몇 분에서 몇 주로 줄었들었다는 둥) 소프트웨어 장인이 되기 위해서 단순히 코드를 잘 짜고, 유지보수를 쉽게 하는 것과 같은 개발에만 초점에 맞춘 것이 아니라, 회사에서 소통하는 법, 인터뷰어, 인터뷰이의 관점에서 알아야 할 것, 채용 공고 내는 법, 면접 보는 법 등 개발자로서 할게 될 수 있는 다양한 업무들에도 초점을 맞추고 있다. 즉, 장인이 되기 위해서는 혼자만 개발을 잘 하는 것이 아니라 그 외의 관련 업무들..
[리뷰] Fundamental C++ 프로그래밍 원리, 김화수 Fundamental C++ 프로그래밍 원리국내도서저자 : 김화수출판 : 혜지원 2015.01.20상세보기책의 서문에도 쓰여있듯이, 문법을 소개하고 사용법을 알려주는 일반적인 문법 책이 아니다. 당연하게 생각하던 것들이나, 잘 알지 못 하는 부분들을 알려주고 원리에 초점을 맞춘 책이다. C++ 뿐만 아니라, C에 대한 내용도 다루고 있으며, 간단한 어셈블리어, 메모리 구조 등도 설명해주면서 이해를 도와(?)주기도 하고 더 넓은 범위를 배우는 데 도움을 준다. 최신 C++ 내용과 MS에서 주로 사용하는 VC++과 linux 계열에서 주로 사용하는 GCC 양쪽을 비교해주는 부분도 많이 있었다. 개인적으로 초반부에는 정말 흥미롭게 재미있게 읽었다. 선언과 정의의 차이, mangling 등 진짜 기초적인 문법책..