본문 바로가기

전체 글

(215)
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 등 진짜 기초적인 문법책..
02. System Structure & Program Execution (2/2) 1. System call: 운영체제의 함수를 호출하는 것 2. 입출력 (동기/비동기) 가. 동기식 입출력(Synchronous I/O): I/O 장치의 결과를 보고, 사용자 프로그램에 넘어감1) 구현법1: I/O가 끝날 때까지 CPU 낭비시킴 (매 시점 하나의 I/O만 일어남)-> CPU와 I/O 둘 다 낭비 2) 구현법2: I/O 요청을 한 후, CPU는 다른 프로세스에 넘겨줌 나. 비동기식 입출력(Asynchronous I/O): I/O 장치의 결과를 기다리지 않고 사용자 프로그램에 넘어감-> 두 가지 모두, I/O의 완료는 Interrupt로 알려줌*순서) 사용자 -> 커널에 I/O 요청 -> 사용자에게 바로 다시 넘어오냐, 결과를 보고 넘어오냐 3. DMA(Direct Memory Access)..
02. System Structure & Program Execution (1/2) 1. 컴퓨터 주요 구조가. 컴퓨터: CPU, Memory나. I/O Device: 디스크, 모니터, 마우스, 키보드 2. 기능 가. timer: 특정 프로그램이 CPU 독점을 막기 위해 정해진 시간 할당 (time sharing) 나. mode bit: 0이면 CPU가 모든 것을 할 수 있음, 사용자 프로그램에게 CPU를 넘겨줄 때 1로 바꿔 제약을 줌다. Device Controller: I/O 장치를 관리하는 일종의 CPU와 유사한 것 -> hardware cf) device driver: OS 코드 중 각 장치별 처리 루틴 -> software 라. DMA Controller: CPU가 너무 많은 Interrupt가 있을 경우 효율이 떨어지므로 CPU가 아니여도 메모리에 접근할 수 있게 한 장치마...