혼자 공부하는 컴퓨터 구조 + 운영체제

1:1 과외하듯 배우는 IT 지식 입문서. 독학으로 컴퓨터 구조와 운영체제를 배우는 입문자가 ‘꼭 필요한 내용을 제대로 학습’할 수 있도록 구성했다. 뭘 모르는지조차 모르는 입문자의 막연한

www.aladin.co.kr

 

computer science에 대한 기본 지식이 없어도 처음부터 차근차근 공부할 수 있는 책이다. 책과 유튜브 영상, 깃허브 추가자료까지 있고 저자가 유튜브 영상과 깃허브 추가자료에 댓글까지 달아 준다. 리눅스에 대한 기본적인 지식은 있지만 컴퓨터 구조에 대한 이해도 없고 귀동냥으로 들은 지식이 전부이기 때문에 체계적으로 정리할 필요가 있어 구매한 책이다. 

크게 컴퓨터 구조에 대한 부분과 운영체제에 대한 부분으로 나뉘어져 있다. 전반부에서는 컴퓨터 구조에 대한 큰 그림과 네가지 핵심인 CPU, 메모리, 보조기억장치, 입출력장치에 대해서 설명한다. 후반부에서는 운영체제에 대해서, 그리고 프로세스와 스레드, CPU 스케줄링, 메모리 관리기법, 파일 시스템에 대해서 설명한다. 

한정된 자원을 가지고 문제해결을 하는 개발자는 sw에 대한 이해 뿐만 아니라 hw에 대해서도 이해가 필요한데, 컴퓨터 공학과에서 4년 배우는 지식을 요약 정리한 책으로 보인다. 우리가 매일 접하는 웹사이트나 앱이 만들어지는 컴퓨터에 대한 기본 지식은 재미있지도 않고 어려운 지식이지만 IT 업계에서 일한다면 꼭 배워야 할 지식이다.                                                                                            

 

* 유튜브 영상

* 추가 공부자료

 

GitHub - kangtegong/self-learning-cs: 집필서적- 『혼자 공부하는 컴퓨터구조 & 운영체제』 (한빛미디어)

집필서적- 『혼자 공부하는 컴퓨터구조 & 운영체제』 (한빛미디어) 심화자료. Contribute to kangtegong/self-learning-cs development by creating an account on GitHub.

github.com

* 정답지

 

혼자 공부하는 컴퓨터 구조+운영체제

어려운 컴퓨터 구조와 운영체제의 원리를 누구나 쉽게 이해할 수 있도록 용어와 개념은 한 번 더 풀어쓰고, 적절한 예시와 이해하기 쉬운 그림으로 재미있게 구성했다. 또한 일상 소재를 활용한

www.hanbit.co.kr

 

 

목차

Chapter 01 컴퓨터 구조 시작하기
01-1 구조를 알아야 하는 이유 
__문제 해결 
__성능, 용량, 비용
01-2 컴퓨터 구조의 큰 그림 
__컴퓨터가 이해하는 정보
__컴퓨터의 4가지 핵심 부품
Chapter 02 데이터
02-1 0과 1로 숫자를 표현하는 방법 
__정보 단위
__이진법
__십육진법
02-2 0과 1로 문자를 표현하는 방법 
__문자 집합과 인코딩
__아스키 코드
__EUC-KR
__유니코드와 UTF-8
Chapter 03 명령어
03-1 소스 코드와 명령어 
__고급 언어와 저급 언어
__컴파일 언어와 인터프리터 언어
[좀 더 알아보기] 목적 파일 vs 실행 파일
03-2 명령어의 구조
__연산 코드와 오퍼랜드
__주소 지정 방식
[좀 더 알아보기] 스택과 큐
Chapter 04 CPU와 작동 원리
04-1 ALU와 제어장치 
__ALU
__제어장치
04-2 레지스터 
__반드시 알아야 할 레지스터
__특정 레지스터를 이용한 주소 지정 방식(1): 스택 주소 지정 방식 
__특정 레지스터를 이용한 주소 지정 방식(2): 변위 주소 지정 방식 
[좀 더 알아보기] 상용화된 CPU 속 레지스터 및 주소 지정 방식
04-3 명령어 사이클과 인터럽트 
__명령어 사이클 
__인터럽트 
[좀 더 알아보기] 예외의 종류
Chapter 05 CPU 성능 향상 기법
05-1 빠른 CPU를 위한 설계 기법  
__클럭
__코어와 멀티 코어
__스레드와 멀티스레드
05-2 명령어 병렬 처리 기법 1
__명령어 파이프라인 
__슈퍼스칼라 
__비순차적 명령어 처리
05-3 CISC와 RISC
__명령어 집합
__CISC
__RISC  
Chapter 06 메모리와 캐시 메모리
06-1 RAM의 특징과 종류  
__RAM의 특징 
__RAM의 용량과 성능
__RAM의 종류
06-2 메모리의 주소 공간
__물리 주소와 논리 주소
__메모리 보호 기법
06-3 캐시 메모리 
__저장 장치 계층 구조 
__캐시 메모리
__참조 지역성 원리  
Chapter 07 보조기억장치
07-1 다양한 보조기억장치 
__하드 디스크  
__플래시 메모리 
07-2 RAID의 정의와 종류
__RAID의 정의
__RAID의 종류 
Chapter 08 입출력장치
08-1 장치 컨트롤러와 장치 드라이버
__장치 컨트롤러 
__장치 드라이버 
08-2 다양한 입출력 방법
__프로그램 입출력
__인터럽트 기반 입출력
__ DMA 입출력
Chapter 09 운영체제 시작하기
09-1 운영체제를 알아야 하는 이유
__운영체제란
__운영체제를 알아야 하는 이유 
09-2 운영체제의 큰 그림
__운영체제의 심장, 커널
__이중 모드와 시스템 호출
__운영체제의 핵심 서비스 
[좀 더 알아보기] 가상 머신과 이중 모드의 발전
[좀 더 알아보기] 시스템 호출의 종류
Chapter 10 프로세스와 스레드
10-1 프로세스 개요
__프로세스 직접 확인하기
__프로세스 제어 블록
__문맥 교환
__프로세스의 메모리 영역 
10-2 프로세스 상태와 계층 구조
__프로세스 상태
__프로세스 계층 구조 
__프로세스 생성 기법
10-3 스레드
__프로세스와 스레드 
__멀티프로세스와 멀티스레드 
Chapter 11 CPU 스케줄링
11-1 CPU 스케줄링 개요
__ 프로세스 우선순위
__스케줄링 큐
__선점형과 비선점형 스케줄링 
11-2 CPU 스케줄링 알고리즘
__스케줄링 알고리즘의 종류
Chapter 12 프로세스 동기화
12-1 동기화란
__동기화의 의미
__ 생산자와 소비자 문제
__공유 자원과 임계 구역 
12-2 공유 자원과 임계 구역 
__뮤텍스 락
__세마포
__모니터
Chapter 13 교착 상태
13-1 교착 상태란
__식사하는 철학자 문제 
__자원 할당 그래프
__교착 상태 발생 조건 
13-2 교착 상태 해결 방법
__교착 상태 예방
__교착 상태 회피
__교착 상태 검출 후 회복
Chapter 14 가상 메모리
14-1 연속 메모리 할당
__스와핑
__메모리 할당
__외부 단편화
14-2 페이징을 통한 가상 메모리 관리 
__페이징이란
__페이지 테이블
__페이징에서의 주소 변환
__페이지 테이블 엔트리
[좀 더 알아보기] 페이징의 이점 - 쓰기 시 복사
[좀 더 알아보기] 계층적 페이징 
14-3 페이지 교체와 프레임 할당 
__요구 페이징
__페이지 교체 알고리즘 
__스래싱과 프레임 할당
Chapter 15 파일 시스템
15-1 파일과 디렉터리
__파일
__디렉터리
[좀 더 알아보기] 상대 경로를 나타내는 또 다른 방법
15-2 파일 시스템 
__파티셔닝과 포매팅
__파일 할당 방법
__파일 시스템 살펴보기
[좀 더 알아보기] 저널링 파일 시스템
[좀 더 알아보기] 마운트 

 

 

[전자책] 오브젝트

역할, 책임, 협력에 기반해 객체지향 프로그램을 설계하고 구현하는 방법, 응집도와 결합도를 이용해 설계를 트레이드오프하는 방법, 설계를 유연하게 만드는 다양한 의존성 관리 기법, 타입 계

www.aladin.co.kr

자바 문법에 대해서 기초만 알고 있어서 상세하게 이해하는데는 어려움이 있었다. 컴퓨터의 계산방식이 아니라 사람이 이해하기 쉽게 현실세계를 추상화하고 관계와 역할을 정의하는 방법이 객체지향 프로그래밍이라고 이해했다. 늘 변하는 코드를 어떻게 하면 유지보수를 편하게 할수 있을지에 대해 의문을 가지다가 이 책을 참고하게 되었다.

개발의 경우 대부분 직접 코딩을 하는 경험을 하면서 배우게 되는 지식이 대부분인데, 이 책 또한 그렇다. 어느정도 자바를 할 줄 알고 OOP 설계 경험이 있는 개발자가 읽으면 좋을 것 같다. 하지만 경험이 없더라도 배경지식 삼아 읽으면 개발자와 의사소통이나 지식의 지평을 넓힐 수 있는 책이다.

 

-목차-

▣ 들어가며: 프로그래밍 패러다임

▣ 1장: 객체, 설계
01. 티켓 판매 애플리케이션 구현하기

▣ 2장: 객체지향 프로그래밍

▣ 3장: 역할, 책임, 협력

▣ 4장: 설계 품질과 트레이드오프

▣ 5장: 책임 할당하기

▣ 6장: 메시지와 인터페이스

▣ 7장: 객체 분해

▣ 8장: 의존성 관리하기

▣ 9장: 유연한 설계

▣ 10장: 상속과 코드 재사용

▣ 11장: 합성과 유연한 설계

▣ 12장: 다형성

▣ 13장: 서브클래싱과 서브타이핑

▣ 14장: 일관성 있는 협력

▣ 15장: 디자인 패턴과 프레임워크

▣ 마치며: 나아가기

▣ 부록A: 계약에 의한 설계


▣ 부록B: 타입 계층의 구현

▣ 부록C: 동적인 협력, 정적인 코드

▣ 부록D: 참고문헌

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=176659275 

 

인스파이어드

최고의 회사들이 감동적이고 성공하는 제품을 어떻게 만들고 있는지, 그리고 나아가 이를 제품에 어떻게 적용할 수 있는지를 보여주는 책. 제품 관리 전문가인 저자는 자신의 경험을 아낌없이

www.aladin.co.kr

이 책은 제품을 만드는 PM을 위한 책이다. 그리고 제품을 만드는 사람이 가장 중요하다. 사람이 모여 팀을 만드는데 가장 많은 시간과 에너지를 쏟아야 하고, 팀을 운영하고 협업하는데 집중해야 한다. 

제품을 만드는 팀은 미션을 기반으로 한 팀이다. 용병은 지시한 것을 만드는 반면 미션팀은 비전을 믿고 고객을 위해 문제를 해결한다. 팀은 경우에 따라 다르지만, 제품 관리자, 디자이너 엔지니어로 구성된다. 보통 한명의 제품 관리자, 한명의 디자이너, 2~10명의 엔지니어로 구성된다. 제품팀은 문제해결을 위해 장기간 같이 일하는 숙련된 기술을 가진 구성원들의 조합이다. 팀은 보고 관계가 아닌 수평적 구조를 지향한다. 팀은 보통 유의미한 단위의 사용자 경험을 담당한다. 팀을 나누는 다양한 기준은 고객 여정, 단말, 고객 세그멘테이션 등이 있다. 팀은 오래 지속되어야 한다. 그래야 서로 효과적으로 일하는 방법을 배울 수 있다. 팀은 높은 수준의 자율성을 가진다.

책의 목차

 

  1. 최고의 기술기업에서 배운 것
  2. 사람
  3. 제품
  4. 프로세스
  5. 문화

 

 

[전자책] 데이터 자본주의 : 폭발하는 데이터는 자본주의를 어떻게 재발명하는가

근대 역사에서 자본주의는 기업과 금융가들만의 이야기였다. 하지만 오늘날에는 데이터가 불러온 혁신 덕분에 모든 것이 변화를 겪고 있다. 이 책은 데이터가 풍부한 이상적 시장이 다가오면서

www.aladin.co.kr

이 책의 부제는 '폭발하는 데이터는 자본주의를 어떻게 재발명하는가' 이다. ICT 기술의 발달로 데이터 저장량이 폭발적으로 증가하는 과정에서 기존 자본주의 패러다임이 어떻게 변하는지에 대해 설명하고 있다. 기존 자본주의 경제의 매커니즘이 마켓이고, 시장에서 거래되는 재화나 서비스에 대해 자신이 어떻게 거래할 것인지를 결정하기 위해서는 상품에 대한 정보가 필요하다. 상품에 대한 정보를 통해 개인의 선호와 필요가 결정되어 거래가 성립된다.

그러나 모든 상품에 대한 정보를 모으고 유통시키기 어렵기 때문에 가격이라는 수단을 이용해서, 특정 상품의 가치를 매긴다. 가격 정보가 판매자와 구매자간의 거래를 성립시킨다. 즉, 가격과 가격을 만드는 법정화폐가 시장에 정보를 제공하고, 거래를 성립시켜 금융화폐 자본주의 시스템을 운영해 왔다.

폭발적인 빅데이터의 수집 및 분석 능력이 발전함에 따라 상품의 개인별 선호 및 필요가 알고리즘 기반으로 분석되고, 최적의 상품을 추천해준다. 구매자와 판매자 간 정보 불균형을 가격이 해결하지 못했다면, 데이터는 그 해결책을 찾아가고 있다. 세상의 다양한 데이터가 모여 가격을 대체할 때 시장의 효율성이 극대화 된다. 이것이 데이터 자본주의로 넘어가는 과정이고 개인의 욕망을 극대화하는 과정이다.

마켓의 가치 척도가 '가격'에서 '데이터'로 변해가는 과정에서 다양한 가치와 정보를 표현하기 때문에 더욱 효율적인 시장경제를 만들어 나갈 수 있다. 그래서 기존 금융기관들도 데이터를 소유하려고 슈퍼앱을 만들기 위해 전략을 수정하고 있다. 화폐를 많이 가진 기업보다 데이터를 많이 가진 기업들이 기존 마켓을 대체하고 새로운 마켓을 만드는데 유리하기 때문이다. 과거에는 스타트업이 은행에 대출을 받기 위해 찾아갔다면, 이제 투자자들이 스타트업을 적극적으로 찾고 있다.

데이터가 가격 보다 우선시 되는 세상으로 변하고 있다.

 

[전자책] 부의 인문학 (20만부 기념 개정증보판)

지금까지 인문학을 ‘투자’라는 렌즈를 통해 바라본 책은 없었다. 인문학을 이토록 쉽고 재미있게, 투자의 눈을 뜨게 하는 도구로 사용할 수 있다는 것만으로도 흥미롭다. 저자는 자기 안에서

www.aladin.co.kr

목차

거인의 어깨에 올라서면 비로소 보이는 것들
제1장 노예의 삶을 선택한 사람들
제2장 부동산 가격이 움직이는 메커니즘
제3장 반드시 이기는 주식 투자법
제4장 투자의 길을 만드는 부의 법칙

 

    자산 증식의 관점에서 인간은 시간을 이길 수 없다. 시간을 활용하기 위해 복리의 마법을 적극적으로 사용해야 한다. 그리고 그 방법으로 이미 검증된 방법을 사용하면 된다. 하지만 그 방법을 꾸준히 하면서 돈을 불려나가는 사람은 많지 않다. 이게 핵심이다. 말도 안되는 수익률을 보장해준다는 허언에 속아 사기를 당해 원금을 잃어버리면 절대 안된다. 시간을 거스를 수는 없기 때문이다.

    시간이 지나면 경제는 성장한다. 더 좋은 물건과 서비스를 만들어 내고, 그에 따라 사람들의 기대치는 높아진다. 변하지 않는 사실이다. 대표적으로 과거의 핸드폰과 지금의 스마트폰을 비교해보면 엄청난 발전이 있었고, 가격도 더 비싸졌다. 그리고 경제가 성장함에 따라 사람들의 임금도 점점 높아져 간다. 더 좋은 상품을 만들고, 서비스를 제공하기 때문에 임금이 높아지는 것도 있고, 인플레이션 때문에 돈의 가치가 점점 낮아지기 때문이다. 돈과 같은 동산의 가치보다 실물 부동산의 가치가 높아지는 것도 비슷한 맥락이다.

    한국의 부동산 중 서울과 서울 인근 지역은 장기적으로 가격이 떨어질 수가 없다. 4차 산업이 발전하면서 사람의 지적 노동력이 점점 중요해지고 있고, 사람들이 한곳으로 모이서 집단 지성을 발휘하게 되는데 한국에서는 서울이 그 중심이다. 서울이라는 도시의 영향력은 점점 커지고, 서울 핵심 지역의 땅 가격은 점점 높아질 것이다. 국가 균형발전의 측면에서는 매우 안타깝지만 서울이 아닌 지방 대도시들이 과거와 같이 성장하기는 어려울 것이다. 지방 소도시는 이미 인구감소와 고령화로 인해 소멸단계로 접어 들었다. 역시 인간은 시간을 거스를 수가 없다.

    대부분의 한국의 기업에 투자하는 것도 다시 생각해 봐야 한다. 미국 주식시장이라는 매력적인 투자처가 있는데, 굳이 한국 주식시장에 투자를 하지는 않을 것 같다. 자산을 분배한다는 측면에서, 그리고 몇몇 글로벌 기업에 투자한다는 점에서 한국 기업들에 투자를 할 수는 있겠지만, 점점 매력이 떨어져 간다. 그리고 기업 투자에 대해서 잘 모른다면 안하는게 좋다. 한국 주식시장은 생각하지도 못한 변수들이 너무 많다. 

    노동으로 벌어서 자산을 증식시키는 것보다 투자로 자산을 증식시키는 것이 훨씬 수익률이 높다. 개인의 노력으로 성공할 확률보다 시대의 흐름, 기업의 가치, 땅의 가치에 투자해 성공할 확률이 더 높기 때문이다. 한국 직장인은 70세를 일해야 하는데, 50세 까지는 정규직으로 일하고 나머지 20년은 비정규직으로 일하는 것이 평균이라고 한다. 꼭 돈을 많이 벌어야 할까라는 생각보다는 편안한 노후를 위해 세상에 통용되는 상식과 시간을 거스르려고 하지 말고, 미리 자산 투자의 원리에 대해 알아 놔야 한다. 그러기 위해 이 책을 읽어야 한다.

 

 

기본
1. 다른 사람과의 관계를 소중히 여긴다.
2. 자기계발을 평생 지속한다
3. 하루도 빠짐없이 성과를 낸다
4. 글로벌 마인드를 한순간도 놓치지 않는다.

1. 사람과의 관계에 투자한다

- 이해관계를 초월한 진정한 관계를 추구한다면 결과적으로 인간관계는 발전한다.
- 인맥을 쌓기 위해 다른 사람과 보내는 시간과 비용을 절대 아까워하지 않는다.
- 처음 만난 상대방의 이름을 직접 불러 보며 자신의 입과 귀로 반드시 확인한다.
- 출신지는 어디입니까?는 첫 만남의 어색함을 풀어주는 질문이다.
- 선배나 상사를 따르면 도움이 되는 피드백을 받을 수 있다.
- 일주일에 한 번은 전혀 관계가 없는 사람을 만난다.

2. 자신의 내면과 외면을 가꾸는 일에 힘쓴다

- 여유를 가지기 위해 평소 애프터 유를 중요하게 생각한다.
- 책을 읽는 시간의 3배를 투자해 생각하는 시간을 갖고 각 장마다 차분히 생각한다.
- 참신한 아이디어를 내기 위해서는 아이디어를 받쳐 주는 논리력이 반드시 뒤따라야 한다.
- 생각한다와 조사한다를 구분해 시간을 사용한다.
-  so what? why so? 질문을 반복하면서 생각한다.
- 끊임없이 새로움에 도전하는 젊은 정신을 유지하기 위해 운동을 거르지 않는다.

3. 시간을 지배하는 사람들의 업무술

- 아무리 바빠도 반드시 약속 시간을 지킨다.
- 일과 삶의 조화를 위해 노력하면 성장의 질이 달라진다.
- 집중력이 가장 높은 오전 업무 시간을 소중하게 활용한다.
- 다음 날 곧바로 업무를 시작할 수 있도록 퇴근 전에 자료를 정리정돈하고, 할일 리스트를 적는다.
- 월요일 아침에는 15분 일찍 일어나도록 알람시계를 맞춰 놓는다.
- 업무가 쌓여 있을 때는 우선순위가 높고 시간이 적게 걸리는 일부터 처리한다.

4. 성과로 이어지는 커뮤니케이션 노하우

- 업무 지시는 반드시 메모로 남기고, 지시가 끝난 시점에서 확인한다.
- 새로운 일은 맡자마자 바로 5분 동안 시작하면서 계획을 세우고 의문점을 없앤다.
- 회신 속도가 곧 당신을 평가하는 기준이 된다.
- 상사가 언급하기 전에 먼저 보고하고 상사와 의견이 다를 때 가설을 넣으면 효과적이다.
- 바쁜 상사일수록 스케줄 사이로 비집고 들어가서 보고한다.
- 일을 맡으면 바로 시작하고 일부라도 좋으니 다음 날 아침에 반드시 보고한다.

5. 이익을 극대화하는 자료로 회의에 기여한다

- 프리젠테이션 자료를 만들 때 시각적 자료가 없어도 전달하려는 메시지에 설득력이 있는지 철저하게 고민한다.
- 자료는 오프닝을 의식하면서 작성한다.
- 하나의 차트, 하나의 메시지라는 기본 원칙에 따라 자료를 만든다.
    - who (회의 참가자는 누구인가)
    - why (회의의 목적은 무엇인가)
    - what (무엇을 말하고자 하는가)
- 자료 작성을 마무리했다면 반드시 디테일을 점검한다.
- 회의에서는 서툰 의견이라도 반드시 발언해야 한다.
- 평소 노트를 정리하는 습관을 들이면 논점을 파악하고 이를 시각적으로 표현하는 능력이 올라간다.

6. 글로벌 커리에 도전하라

- 나라를 생각하는 마음은 강력한 동기부여가 된다.
- 비즈니스 영어에서는 유창함보다 논리성과 당당한 태도가 중요하다.
- 영어 공부를 위해 가장 이해하기 쉬운 목표를 정한다.
- 지금보다 한 단계 높은 직책을 목표로 잡고 일의 완성도와 책임감을 높인다.
- 회사를 퇴학이 아닌 졸업으로 마무리한다.
- 자기 노트로 자신의 목표를 관리해 나간다.

+ Recent posts