메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

실습과 그림으로 배우는 리눅스 구조

개발자가 알아야 하는 OS와 하드웨어의 기초

한빛미디어

번역서

절판

  • 저자 : 다케우치 사토루
  • 번역 : 신준희
  • 출간 : 2019-02-20
  • 페이지 : 304 쪽
  • ISBN : 9791162241523
  • 물류코드 :10152
  • 개정판정보 :개정판이 새로 출간되었습니다. 개정판 보기
  • 초급 초중급 중급 중고급 고급
4.4점 (19명)
좋아요 : 4

<개발자 레벨업 프로젝트> OS의 구조를 들여다 보자!

 

스마트폰에서 클라우드까지, IT 산업 곳곳에서 리눅스가 보입니다. 이렇게 산업과 생활 전반에 걸쳐 사용하는 OS는 어떻게 움직일까요?

이 책은 컴퓨터 시스템을 구성하는 운영체제를, 그중 가장 많이 사용하는 리눅스를 예로 들어 설명했습니다. 단순히 읽고 넘어가지 않고 스스로 실습해보며 동작 원리를 익힐 수 있으며, 프로그래머, 시스템 설계자 등 대부분의 개발자에게 꼭 필요한 지식을 담았습니다.

이 책을 통해 소프트웨어와 하드웨어의 상호작용을 이해하세요. 그다음, 책에서 배운 운영체제 전체 구성, 프로세스, 메모리 등에 대한 이해를 바탕으로 프로그램을 개발한다면 소프트웨어 신뢰도를 확보하는 동시에 성능 최적화까지도 도전할 수 있습니다.

 

 

누구를 위한 책인가요?

 

현업에서 OS나 하드웨어 구조를 알고 프로그래밍 해야 하는 개발자와 리눅스 동작과 구조에 관심있는 학생, 벤더의 서버 엔지니어라면 이 책이 꼭 필요합니다.

 

 

[도서 특징]

 

따라하며 OS의 작동방식을 이해해봅시다.

이 책에서는 컴퓨터 시스템을 구성하는 OS(운영체제, Operating System)나 하드웨어를 직접 다루며 어떻게 작동하는지를 알려줍니다. 실습을 진행하는 환경은 우분투 리눅스 16.04/x86_64입니다.

애플리케이션 개발자, 시스템 설계자, 지금 서비스를 운영하거나 벤더의 서버 엔지니어라면 이 책을 한 번 읽어 보길 권합니다. 단, 리눅스의 기본 명령어 정도는 아셔야 합니다.

 

책을 통해 OS나 하드웨어에 대한 이해도를 높이고 나면 다음과 같은 일이 가능합니다.

  • 하드웨어 특성을 고려하여 소프트웨어를 개발할 수 있습니다.
  • 시스템 설계 시 기준으로 삼을 지표가 무엇인지 알 수 있습니다.
  • OS나 하드웨어 관련 오류를 대처할 수 있습니다.

 

 

[추천사]

 

저자의 교육법은 매우 독특하고 늘 풍부한 도표와 설명을 더한 테스트 데이터를 그림으로 보여줍니다. 이런 그림과 데이터는 구체적이고도 간결하게 상황을 잘 설명해 이해를 돕습니다. 예를 들어 성능을 내기 위해 프로그램을 작성할 때 필수인 캐시 메모리를 설명할 때에는 동작 원리를 그림으로 나타낼 뿐만 아니라, 메모리와 캐시 메모리의 구체적인 속도 차이를 나타내는 그래프를 이용하기도 합니다. 이런 독특한 교육 방법으로 저자에게 배운 덕에 신입사원들도 프로그램을 짜면서 프로그램의 품질까지도 고려하는 개발자로 성장했습니다.

다케우치 사토루 저자

다케우치 사토루

2005년부터 2017년까지 후지쯔 주식회사에서 엔터 프라이즈 리눅스, 특히 커널 개발과 지원을 담당하였다. 2017년 사이보우즈 주식회사 기술 고문에 취임해서 2018년부터 cybozu.com의 새로운 인프라 저장소 개발을 담당하고 있다.

 

신준희 역자

신준희

컴퓨터공학과를 졸업하고 드러나지 않는 분야에서 주로 일했다. 2008년부터 2013년까지는 리눅스 및 안드로이드용 GPU 드라이버 개발과 GPU 애플리케이션 이식 작업을 주로 했다. 그후 2017년까지는 그래픽 엔진 개발회사에서 그래픽 엔진 개발과 콘텐츠 제작을 했다. 현재에는 일본과 한국을 오가며 모바일 GPU용 그래픽 엔진을 개발하며 콘텐츠를 제작하고 있다.

CHAPTER 1 컴퓨터 시스템의 개요 

 

CHAPTER 2 사용자 모드로 구현되는 기능

시스템 콜 

시스템 콜의 wrapper 함수 

표준 C 라이브러리 

 

CHAPTER 3 프로세스 관리

프로세스 생성의 목적 

fork() 함수 

execve() 함수 

종료 처리 

 

CHAPTER 4 프로세스 스케줄러

테스트 프로그램의 사양 

테스트 프로그램의 구현 

첫 번째 실험 

고찰 

컨텍스트 스위치 

프로세스의 상태 

상태 변환 

idle 상태 

여러 가지 상태 변환 

스루풋과 레이턴시 

실제 시스템 

논리 CPU가 여러 개일 때 스케줄링 

실험 방법 

두 번째 실험 

스루풋과 레이턴시 

고찰 

경과 시간과 사용 시간 

슬립을 사용하는 프로세스 

실제 프로세스 

우선순위 변경 

 

CHAPTER 5 메모리 관리

메모리의 통계 정보 

메모리 부족 

단순한 메모리 할당 

가상 메모리 

페이지 테이블 

실험 

프로세스에 메모리를 할당할 때 

실험 

고수준 레벨에서의 메모리 할당 

해결법 

가상 메모리의 응용 

파일 맵 

디맨드 페이징 

메모리 부족 

스왑 

계층형 페이지 테이블 

Huge Page 

 

CHAPTER 6 메모리 계층

캐시 메모리 

Translation Lookaside Buffer 

페이지 캐시 

동기화된 쓰기 

버퍼 캐시 

파일의 읽기 테스트 

파일의 쓰기 테스트 

튜닝 파라미터 

정리 

하이퍼스레드 

 

CHAPTER 7 파일시스템

리눅스의 파일시스템 

데이터와 메타데이터 

용량 제한 

파일시스템이 깨진 경우 

저널링 

Copy on Write 

그래도 깨지는 것을 막을 수 없는 경우 

파일시스템의 깨짐에 대한 대책 

파일의 종류 

캐릭터 장치 

블록 장치 

여러 가지 파일시스템 

메모리를 기반으로 한 파일시스템 

네트워크 파일시스템 

가상 파일시스템 

Btrfs 

 

CHAPTER 8 저장 장치

HDD의 데이터 읽기 쓰기의 동작 방식 

HDD의 성능 특성 

HDD의 테스트 

테스트 프로그램 

블록 장치 계층 

I/O 스케줄러 

미리 읽기 

테스트 

시퀀셜 접근 

랜덤 접근 

SSD의 동작 방식 

정리 

 

찾아보기

표지 - 펭귄이란 것 외에 뭘 표현한 건지는 잘...

 

<요약>

  1. 프로그램을 처음 배우는 공학계열 학생이나 devops를 꿈꾸는 신입 사원에게 적합한 책
  2. 본격적인 커널 학습 전에 가볍게 읽기 좋은 책
  3. 인터럽트나 커널 동기화 등 고급 주제를 다루지 않은 부분은 아쉬움
  4. 오탈자가 일부 있음

오랜만에 술술 잘 읽히는 전공 기초 서적을 찾았다.

다케우치 사토루 씨 (사실 누군지 잘 모름) 가 쓴 '실습과 그림으로 배우는 리눅스 구조' 라는 책인데, 정말 '제목'과 '책 소개 내용'에 충실한 책이라 느껴진다.

실습과 그림으로 배우는 리눅스 구조 - 8점
다케우치 사토루 지음, 신준희 옮김/한빛미디어

먼저 제목.

 

각 장에서 소개하는 구조나 기술마다 실습과 그림을 붙여 이해하기 매우 쉽게 썼다.

그림과 실습 (간단한 프로그램과 스크립트를 이용)을 통해 리눅스 OS 상의 프로그램을 실제로 동작시키면서 OS의 역할과 특징을 설명하고 있기 때문에 처음 리눅스를 접하거나 OS의 역할과 특징을 공부하고자 하는 사람들도 쉽게 접근이 가능하다.

또한, '책 소개'에서 설명한 것 같이(개발자 레벨업 프로젝트, 컴퓨터 공학 기초) 같이 특징적으로 설명할 부분이 있다면, 비슷한 테스트를 여러 차례 수행해서 차이와 결과를 비교하면서 설명하기 때문에 이해가 빠르게 된다.

 

책은 다음과 같이 총 8장으로 구성되어 있는데, 편의상 2장씩 묶어 설명하는 것이 자연스럽고 저자의 의도도 그러하리라 예상된다.

 

- 1-2장 : OS의 일반적인 특징 설명 (특별히 리눅스라 하지 않더라도)

- 3-4장 : 프로세스와 스케쥴러 설명

- 5-6장 : 메모리 관리

- 7-8장 : 저장 장치

 

핵심만 간략하게 정리하고 있지만, 인터럽트와 커널 동기화, 타이머 등 리눅스 커널과 관련한 깊이 있는 분야 설명이 부족한 부분은 '리눅스 커널의 이해' 나 '리눅스 커널 심층 분석' 등 다른 책으로 보완이 필요하다.

리눅스 커널의 이해 - 10점
다니엘 보베이.마르코 체사티 지음, 박장수 옮김/한빛미디어
리눅스 커널 심층 분석 - 10점
로버트 러브 지음, 황정동 옮김/에이콘출판

 

저자가 서문에서도 밝혔듯 프로그램을 처음 배우는 공학계열 학생이나 devops를 꿈꾸는 신입 사원에게 OS의 기본적인 정보를 알려줌으로써 자신의 프로그램이 동작하는 방식이나 운영하게 되는 시스템의 기본에 충실하게 해 주고, 레벨업을 원하는 개발자들에게 본격적인 커널 학습 전에 개념을 잡는 데 도움이 될 만한 책이다.

 

다만, 몇몇 부분에서 오류가 있다. 번역의 문제인지 원작의 문제인지는 모르겠으나, 특히 3장의 경우 핵심 알고리듬 설명 오류가 보이는 점은 다음 쇄에서 개선이 필요해 보인다.

3장에서 copy on write를 설명하는 부분인데, 앞 장과 절에서 충분히 copy on write를 설명해 놓고 (심지어는 '미주'에서도 copy on write를 설명하고 있음) 제목은 "메모리 부족" 으로 뽑았다.

Copy on Write 대신 '메모리 부족'...

또한, Copy on Write의 설명에서 '테이블의 주소값 (600-700 -> 700-800) 이나, 빠진 주소 (800), 빠진 번호 (3 업데이트) 등은 '옥의 티' 다.

이 외에도 6장 등에서 코드의 indent가 맞지 않는 점 등은 다음 쇄에서 개선이 필요해 보인다.

 

부족한 부분의 수정, 보완은 필요해 보이고 무엇보다 OS에서 특히 중요한 주변 장치의 제어에 관련된 내용이나, 커널 프로그램을 위해 필요한 동기화, 타이머 등의 설명은 다른 책을 참고할 수 있도록 하는 부분도 추가되면 좋겠다. 어쨌든 전반적으로 쉽게 잘 읽히도록 만든 책이어서 오랜만에 기억을 되새기며 잘 읽었다.

정말 기초서적으로 참 좋은 책입니다.

개인적으로 처음에 리눅스 공부할 때 소스코드부터 봐야하나 운영체제이론부터 봐야하나 고민했던 적이 있습니다.

둘다 뭔가 동 떨어진 느낌이 강해서 걍 둘다 했었는데, 이 책은 그걸 도와준다고 볼 수 있겠네요.

 

기본적으로 리눅스에 대한 명령어로 구조를 파악합니다.

예를 들어, free명령어 결과에 대해서 설명하고 리눅스는 어떤 구조를 가졌는지를 설명한 다음 다시 free명령어의 결과로 정리는 합니다.

이는 정말 탁월한 설명 방법 같네요.

그림으로 직관적으로 설명해주는다는건 솔직히 덤입니다. 제 입장에서는 없어도 될 정도로 설명이 깔끔합니다.

그림으로 또 다시 보여주니까 초심자 분들에게 최적의 책이라고 말할 수 있겠네요.

 

근래에 나온 리눅스 기초서적 중에서 제일 깔끔하게 나온 책같습니다.

 

물론 이 책 한권 읽고 리눅스 마스터할 수 있다는 이야기는 아닙니다.

책 부제에서도 알 수 있듯이 "개발자가 알아야할 기초"입니다.

필수적인 부분을 아주 깔끔하게 표현한 점이 저를 너무 맘에 들게 했습니다.

이런식으로 설명하는 책은 흔하지 않거든요.

 

제 개인적은 사견으로는 그림에 번호를 잘 넣어줬으면 하는 욕심이 있네요.

가끔 순서가 헷갈리거든요. 물론 글 잘 읽으면 그럴리는 없습니다 ^^

 

리눅스를 처음 경험하시고 리눅스에 다가가고 싶으신 분들에게 정말 강추하는 서적입니다.

저도 리눅스 첨하는 사람들에게 권하는 리스트에 추가할겁니다.

소개

컴퓨터 공학 기초와 개발자의 레벨업을 돕는 데에 초점이 있다는 소개가 주이며

특히 출판사에서는 실습과 그림을 강조한 점이 눈에 띈다

하지만 책을 보기 전에 느낀 개인적인 강점은
보통의 두껍고 부담스러운 리눅스 책들에 비해 얇고 가볍다는 것이었다.

이해를 돕는 도식화

책 자체는 구성부터 실습 예제까지 굉장히 친절한 편이다.

특히 그림이라는 표현보다는 도식화라는 표현이 더 어울릴 법하다고 생각하는데
(왜 그림이라고 표현했는지는 모르겠다)

스케줄러와 메모리 그리고 시스템 콜 등은 정말 상세하게 도식화되어있다.

책 분량의 절반은 도식화라고 볼 수 있을 정도로 친절한 책이다.

컴퓨터 공학 기초부터 데브옵스 입문까지

사실 책을 보기 전에 받은 첫 느낌은 그저 리눅스에 한정된 책이고
그에 해당하는 두께를 가졌구나였다.

하지만 책 분량에 비해 컴퓨터 공학 기초에 대해서도 상당히 많이 다루고 있었고

다양한 케이스와 실습을 다루고 있기에 도움이 데브옵스 입문에도 도움이 될 것 같다.

물론 쌩 입문자가 볼 수는 없는 수준이지만 최소한의 컴퓨터 공학 기초가 있거나
현업에서 일하는 비전공 개발자들에게 디딤돌이 될만한 책이라 생각이 든다.

 

 

 

리뷰라는 건 내용보다 누가 하냐가 중요한 것 같다. 그래서 먼저 나를 소개하고자 한다.

1. 리뷰어 소개

본인은 PC통신을 하며 처음으로 C언어를 배웠다. PC가 돌아가는 원리가 궁금하여 당시 배우는 사람이 없었던 어셈블리어도 간단히 익혔다. 리눅스는 (아마도) 알짜리눅스 6.0 버전을 처음으로 설치했던 것 같다. 리눅스를 통해 처음 사회에 발을 내딛은 것은 2005년 Intel 개발자회의에서였다. 대학생 때는 작은 프로젝트를 수 차례 했다. 짧은 시간이었지만 국제기구에서 개발자로 일했다. 현재는 작은 공기업의 IT부서에서 전체 시스템을 (다른 분들과 함께) 맡아서 운영하고 있다. 재직중인 곳에서는 포탈, 통합검색, 내・외부메일 업그레이드 및 교체 등 여러 가지 프로젝트를 수행했다.

2. 책 소개

이번에 읽은 책은 <실습과 그림으로 배우는 리눅스 구조> – 개발자가 알아야 하는 OS와 하드웨어의 기초이다. 일본의 후지츠(주)에서 일하는 다케우치 사토루씨가 쓴 책을 신준희님이 번역했다. 번역 수준은 훌륭한 편이다.

책 표지
실습과 그림으로 배우는 리눅스 구조

이 책은 OS와 하드웨어 원리를 소개한 다른 책들과 다르게 훌륭한 그림, 쉬운 설명, 그리고 설명을 직접 확인할 수 있는 프로그램 까지 함께 제공하기 때문에 그 어떤 책보다 쉽게 컴퓨터의 동작 원리를 이해할 수 있다.

3. 대상독자

당신이 개발자 혹은 서버 운영자라고 가정하자. 만약 아래 용어 중 하나라도 자신의 언어로 풀어서 설명할 수 없다면 이 책을 읽을 것을 추천한다.

시스템 콜(system call), 커널 모드(kernel mode), 사용자 모드(user mode), 프로세스 생성, 프로세스 스케줄러, sar 명령어, ldd, 물리 메모리, 가상 메모리, 페이지 테이블, 요구 페이지, 페이지 인, 페이지 아웃, 스와핑, COW(Copy On Write), HDD와 SSD의 특성

4. 특징

최근에 읽었던 운영체제와 컴퓨터 원리를 설명한 서적 중 가장 잘쓰여진 책이라고 생각한다. 여기서는 좋았던 점과 아쉬웠던 점을 소개한다.

4.1. 좋았던 점

이 책의 가장 큰 장점은 훌륭한 그림이다. 책 서문에 나오는 컴퓨터 시스템의 계층을 예쁜 모델과 현실로 구분해서 그렸는데 참 인상적이었다.

프로세스와 OS의 관계 또한 그림과 함께 설명을 하다보니 매우 직관적이고 이해하기 쉽다. 아래 그림에서 보듯이 프로세스 고유의 코드(개발자가 작성한 코드)는 사용하는 언어가 제공하는 함수를 사용(OS외의 라이브러리)한다. 그리고 이 언어가 제공하는 기본 라이브러리는 결국 OS 라이브러리. 즉, 시스템 콜을 호출한다. 시스템 콜을 호출하면 프로그램 실행 모드가 사용자 모드에서 커널 모드로 변경되어야 한다. 이러한 설명이 그림과 함께 설명된다. 이 보다 더 쉬울 수 있을까?

가끔씩 OS나 하드웨어가 작동하는 원리를 이전처럼 잘 알 필요가 없다는 사람들도 있다. 실제로 어설픈 사람의 최적화보다 컴파일러의 자동 최적화가 더 나은 경우도 있다. 하지만 만약 자동화에 의해 처리되는 어떤 작업에 의심스러운 부분이 발생하면 어떻게 할 것인가? 그 때는 사람이 직접 분석해야 한다. 이러한 분석을 할 때 필수적으로 요구되는 것이 바로 ‘원리’ 이다. 아래 그림은 OS의 문맥 전환(context switching)에 대해 소개한다.

모바일 컴퓨팅 환경에서는 전원관리가 중요하다. 물론 iOS나 Android가 알아서 잘 하겠지만, 이러한 것이 어떻게 구현되어 작동하는지 알면 더 좋지 않을까?

개발자가 가상 메모리와 물리 메모리가 각각 언제 확보되는지를 이해하고 있다면 프로그램을 작성할 때 이러한 부분을 고려하여 개발할 수 있지 않을까? 물론 어떤 분야에서 일을 하느냐에 따라 고려할 필요가 거의 없는 경우도 있겠지만, 이러한 내용을 이해하는 사람과 그렇지 못한 사람은 시간이 지날수록 내공에 차이가 생기지 않을까?

OS는 I/O 스케줄러를 통해 HDD 또는 SSD가 최적의 성능을 낼 수 있도록 일하고 있다. 알고 있었는가?

C언어의 malloc() 함수는 메모리를 확보한다. 이 함수는 내부적으로 리눅스의 mmap() 함수를 호출한다.

최근에는 대학에서 입문용 프로그래밍 언어로, 산업에서는 인고지능 등에서 많이 사용하는 언어인 파이썬은 어떨까? 파이썬도 결국 C언어처럼 메모리 할당을 위해서 mmap() 함수를 호출한다.

또한, 이 책은 이론을 실제로 확인할 수 있는 프로그램을 제공한다. 아래 그림은 mmap() 함수를 호출하기 전과 후의 프로세스 메모리 맵 상태이다. 붉은 박스를 보면 알 수 있는데, mmap() 함수 호출 후 요청한 크기만큼의 메모리 공간이 확보되었다.

또한 아래 예제는 요구 페이지(demand paging)을 확인하는 프로그램이다. 두 번째 그림에서 보면 실제 물리 메모리가 확보되기 전 page fault가 먼저 발생하는 것을 알 수 있다. 지금 여기서 본인이 얘기하는 내용이 머리에 정확히 그려지지 않는다면 이 책을 사서 읽으면 된다. 정말 쉽게 설명을 하고 있다.

마지막으로 좋았던 점은 이 책의 번역자님이 중간에 작성하신 친절한 주석이다. 책을 읽는 중 궁금한 내용들이 자세히 적혀 있어서 좋았다.

4.2. 아쉬웠던 점

이 책의 내용 자체에 대해서는 아쉬운 점이 별로 없다. 그래도 한 가지 꼽자면 책의 내용을 실습하기 위한 소스코드를 제공하지 않는다는 것이다. 아래는 본인이 작성한 파일이다. 실습은 CentOS 7 (64비트) 에서 했으니 동일한 환경이면 문제 없이 실습이 가능할 것이다.

5. 총평

자신이 작성한 프로그램이 실제로 어떻게 동작하는지 궁금한 사람은 이 책을 읽어야 한다. 사용자 관점에서 조금은 더 컴퓨터 관점으로 프로그램의 실행 원리를 바라보게 되면 조금은 더 컴퓨터와 더 친해질 수 있다.

이 책을 통해 당장 눈에 보이는 화려한 스킬을 쌓을 수는 없다. 그러나 지금 당장은 아니지만 나중에 빛을 볼 수 있는 내공을 쌓을 수 있다. 소프트웨어 개발자로서 필요한 기본 역량을 쌓고 싶은 이들에게 일독을 권한다.

 

스타트업의 열풍은 그와 비례하여 개발에 대한 관심을 많이 불러일으키고 있습니다.
이전보다 더 쉽고, 편하게(?) 원하는 프로그램을 구현할 수 있는 다양한 방법들이 있습니다.
그래도 원하는 기능을 제대로 구현하기 위한 방법으로는 직접 개발하는 것이겠지요.
 
개발 언어, 방법은 다를지라도 서버 위에서 구동되어야 합니다.
서버로는 유닉스, 윈도우 서버 등도 쓰이지만 가장 많이 사용되고 있는 것은 리눅스일 것입니다.
클라우드라고 하는 서비스도 대부분 리눅스 서버를 사용하고 있습니다.
 
이 책 '실습과 그림으로 배우는 리눅스 구조'는 리눅스 서버에 대한 구조와 동작원리를 아주 쉽고, 자세히 설명해 주고 있습니다.
 

수정됨_linux.jpg

 

 
제목에서 알 수 있듯이 이 책은 직접 실습을 통해 리눅스 운영체제를 이해할 수 있게 도와주고 있습니다.
그리고 '글'이 아닌 '그림'으로 그 이해를 더욱 쉽게 도와주고 있습니다.
아래의 이미지와 같이 글보다 더 많은 그림을 통해 머리가 아닌 눈만으로도 이해할 수 있을 정도입니다.
 

22.jpg

 

 
리눅스 운영체제를 개발할 것도 아니고, 서버 인프라와 관련된 일을 하는-혹은 '할'- 것도 아닌데 왜 운영체제를 알아야 하냐구요?
단지 음식을 만들 줄 아는 사람과 재료의 특성을 이해한 음식을 만드는 사람 중 누구의 음식이 더 맛있고, 영양이 풍부할까요?
단지 언어만 아는 개발자와 운영체제까지 알고 있는 개발자의 차이를 위처럼 비유할 수 있을 것 같습니다.
 
지금 당장 먹을 음식이 필요하다면 상관없겠지만 더 나은 음식을 만들기 위해서는 반드시 알아야 할 것이라 생각합니다.
우리가 흔히 쓰는 하드디스크, 램, 파일 등이 실제로 어떻게 동작하고 있는지를 이해한다면 더 나은 사용도 가능하겠지요.
 
이 책이 여타 운영체제에 관련된 책보다 좋은 점은 다른 언어나 기술을 몰라도 배울 수 있다는 점입니다.
중간중간에 나오는 명령어는 직접 입력하면서 배우면 되고, C로 된 소스는 몇 개되지도 않고 이 또한 그냥 타이핑하고 결과를 확인하는 용도입니다.
이 책의 주목적은 운영체제의 이해이지 명령어나 언어가 아닙니다.
그리고 그 목적에 제대로 충실한 책이라 생각합니다.

오늘날 우리는 수많은 IT 서비스들의 도움으로 과거와는 비교할 수 없을 정도로 편리한 삷을 영위하고 있다. 웹 브라우져를 통해 이메일과 일정을 관리하고 메신져 앱을 통해 사람들과 의사소통을 하며 집에서도 인터넷을 통해 음식 배달을 주문할 수 있다. 이러한 서비스들을 제공하기 위해서 수많은 프로그램들이 유기적으로 동작하고 있는데 이러한 프로그램들은 OS 라는 기반이 존재하지 않으면 실행될 수 없다. 이러한 이유로 OS에 대한 지식은 프로그램의 품질 향상 뿐만 아니라 서비스 장애 발생 시 원인 분석 및 해결에 많은 도움이 된다.
 
이 책에서는 오픈 소스 기반의 인기 OS인 리눅스를 가지고 OS의 핵심 기능에 대해 설명하고 있다. 다들 OS라고 하면 무척 난해하고 복잡한 기능들을 떠올릴 것이다. 필자도 학교에서 공부할 때 프로세스, 스레드, 메모리 관리, 파일 시스템 등을 공부하면서 무척 힘들었던 추억(?)이 있다.
 
이 책은 놀랍게도 이러한 난해하고 복잡한 OS의 핵심 기능들을 간단한 그림과 그래프, 간단 명료한 코드, OS 상태 지표를 확인하는 몇몇 프로그램들을 이용하여 신기할 정도로 알기 쉽게 설명하고 있다. 300 페이지 정도의 책이지만 많은 부분이 그림과 코드 영역이기 때문에 글자가 많지 않아서 쉽게 읽힌다. 원서는 일본 서적이지만 번역이 잘되어 있어서 문장을 읽고 이해하는데 아무런 어려움도 느낄 수 없었다. (번역가가 내용을 제대로 이해하지 못했거나 번역이 어색한 일부 번역서들은 오히려 원서보다도 더 이해가 안되는 경우가 몇 번 있었다.)
 
책에서 제공하는 코드들도 설명하려는 OS의 핵심 기능의 실습에 초점을 맞추고 있어서 코드 내용을 이해하는데 크게 많은 시간이 들거나 어렵지 않았다. 그리고 책에서 사용된 각종 OS 상태 확인 유틸리티들이 표시하는 지표들의 의미를 명확히 이해할 수 있어서 실제 프로그램 장애 분석 시  해당 유틸리티를 잘 사용한다면 장애 분석 및 해결에도 많은 도움이 될 것으로 생각된다.
 
이 책은 OS의 핵심 기능을 알기 쉽게 설명한 책이다. 초급 개발자들이 OS에 대해 처음 공부할 때 좋은 시작이 될 수 있다. 중, 고급 개발자들도 짧은 시간에 과거에 배웠던 OS의 기능들을 다시 상기해보기에도 훌륭한 도서라고 생각된다. 단, OS를 직접적으로 다루거나 좀 더 깊은 내용을 공부하고 싶은 사람들은 다른 책을 보아야 한다.

이 책은 네트워크는 다루지 않고 OS, 하드웨어에 초점이 맞춰져 있다.각 주제들에 대해 아주 deep하게 다루는 책은 아니지만 전체적으로 개념을 잡고, 꼭 필요한 명령어들을 습득하기에 좋은 책인 것 같다. 책 제목 답게 삽입 그림, 테스트 프로그램의 소스코드, 리눅스 명령어를 통한 실습 화면을 대부분의 페이지에서 찾을 수 있다. 번역도 깔끔하고 책 페이지 편집도 깔끔하여 술술 읽힌다.

 

닫기

 

 

DSC01494.JPG

 

 

 

우선 그저 컴퓨터 구조에 관심만 있고, 거의 컴퓨터 용어를 모르는 사람은 구매 전 조금 고려해봐야할 것 같다.

비전공자와 같은 초보자들을 위한 책이지만, '배경지식이 전혀 없으면' 조금 버거울 것 같다는 인상을 받았다.
그저 컴퓨터를 켜서 설정되어 있는 기본만을 사용하다보니 리눅스(Linux)가 무엇인지 접하기 흔치 않을 것이기 때문.

 

 

 

 

 

 

DSC01492.JPG

 

 

그러나 친절하게도 가급적 세부적인 것까지 설명하고 있고, 그래서 좀 더 매끄럽게 읽을 수 있는 것 같다.

우선 컴퓨터 프로그래밍 등과 구조를 공부하기로 마음 먹은 사람이라면, 처음에는 쭉 훑어보고
공부하는 과정에서 이 책을 하나하나 뜯어보면 참 좋겠다는 생각이 든다.

 

 

 

DSC01493.JPG

 

 

초보자 입장에서는 그림을 통해 전체적인 과정을 볼 수 있어서 좋고,
저자 분께서 풍부한 교육 경험과 실무 경력을 잘 녹여내어 이론과 실제를 오가며 배우기에는 딱 좋은 내용이다.
개발자로써는 OS의 구조에 대해 좀 더 알고 개발하고 싶거나 리눅스에 대해 의문을 가져본 적이 있는 분들이 읽으시면 더 발전할 수 있는 계기가 될 것 같다.

 

 

 

실습과 그림으로 배우는 리눅스 구조 - 몰라도 된다고? 알면 더욱 더 재미있다.

 

리눅스를 사용 한다고 해서 리눅스 시스템이 움직이는 원리에 대해서 꼭 알아야 하는 것은 아니다. 하지만 옛말에 아는 만큼 보인다고 했다. 뭐든지 그렇지만 아는 부분이 늘어나면 더욱 재미 있다.


1) 컴퓨터 시스템의 개요

전체적인 컴퓨터 시스템의 개요이다. 책의 모든 내용의 흐름은 개요의 흐름 순으로 진행 한다.


2) 사용자 모드로 구현되는 기능

사용자 모드, 커널 모드, 시스템콜


3) 프로세스 관리

fork() !!


4) 프로세스 스케줄러

시분할 시스템에 대해서 배웠었지만, 굉장히 막연한 느낌이었는데, 친절한 설명을 통해서 조금은 이해하게 된 것 같다.


5) 메모리 관리

고급언어를 사용하여 개발하면서 별로 생각해 보지 않았던 메모리 관리에 대한 부분을 오랜만에 재미있게 보았다. 메모리 할당, 해제, 가상메모리, 단편화, 스왑 까지 메모리에 대해서 알아야할 모든 내용을 다루고 있다.


6) 메모리 계층

페이지 캐시, 버퍼 캐시등에 대한 내용을 다룬다.

 

7) 파일시스템

파일시스템에 대한 전반적인 내용을 다룬다. ext4, XFS 등 파일시스템의 구체적인 내용은 아니고 리눅스의 파일종류, 캐릭터 장치, 디렉토리 등 기초적인 내용과 왜 파일시스템이 존재하는 지에 대한 설명이 잘 되어 있다.

 

8) 저장 장치

HDD와 SSD의 동작원리에 대해서 설명 한다. 그래프가 너무 많다.


- 실습

머리말에서 저자는 실제로 직접 실습용 프로그램을 빌드 하고 실행 하여  동작을 확인해보길 권한다고 했지만, 여러가지 사정상 실제로 실습을 진행해 보지는 않았다. 다만 코드는 읽어 봤는데, 아무래도 실습코드이다 보니  C 언어 문외한에 가까운 나에게도 그렇게 어려운 내용은 아니었다. OS나 C언어 입문 하는 사람이라면 필히 직접 코드를 입력 하여 테스트 해보기를 권한다.


-감상

학교 다닐 때 OS 수업시간에 의미도 모르면서 달달 외웠던 단어들이 많이 보여서 반가웠다.  혹시 라도 공룡이 그려진 책을 읽어야 할 필요가 있는 사람이라면, 그 책을 읽기 전에 준비운동 하는 기분으로 가볍에 읽어 볼 수 있는 책이다. 꼭 개발자가 아니더라도, 대학새내기로 컴퓨터공학이나 리눅스를 처음 공부하는 사람이 꼭 읽어 봤으면 한다.

 

리눅스를 본격적으로 배워본 적은 없으나 스타트업에서 back-end 개발자로 살면서 언젠간 꼭 습득해야 할 필요성을 느꼈다.

나는 자바개발자고 C언어는 잘 모른다.

리눅스는 가상머신에 설치해서 깔짝깔짝 건들여본 정도.

본격적으로 리눅스 공부를 시작하기 전에 원리에 대한 기반 지식을 깔아놓고 싶었고, 그래서 선택한 책이다.

'실습과 그림으로 배우는 리눅스 구조'는 OS 동작 원리를 약 300쪽 가량의 분량으로 설명하고 있다.

이 책의 가장 큰 매력포인트는 '그림'이다.

중간중간 설명을 돕는 그림이 삽입되어 있고 덕분에 이해하기가 더 좋다.

다른 책보다 OS 관련된 책들은 유독 두껍고 딱딱한 느낌인데 이 책은 도식화된 설명 덕에 거부감이 덜 하다.

설명도 친절하고 예제 소스가 있어 책을 완독하기까지 지루하지 않았다.

리눅스 기본서라기보다는 더 넓은 의미로 OS에 대한 기본서라고 하는 게 더 맞지 않을까 한다.

C언어를 조금이라도 알았으면 더 쉽게 읽을 수 있었을 텐데 OS나 C언어에 대한 지식이 전무해서 책을 훅훅 넘겨가며 보지는 못했으나 비전공자로서 근본 없는 지식에 대한 한계를 느끼고 있는 개발자에게 추천할 만한 책이다.

 

대상독자

이책의 대상 독자를 저자는 ‘리눅스의 기본 명령어를 아는 어플리케이션 개발자, 시스템 설계자 , 서버엔지니어’ 라고 한다. 역자는 특히 리눅스와 연관된 분야에서 일하는 프로그래머 라고 한다.

나의 경우에는 VM 기반의 환경에서 웹개발을 해오고 있기에, 꼭 보아야 하는 사람의 범주에는 들지 않았다. 그래서 이번 리뷰 대상의 책에 대한 흥미가 높지는 않았다. 아마도 웹 분야의 많은 개발자들도 비슷 할 것이라고 생각한다.

그렇다고 해서, 리눅스등의 OS를 몰라도 된다는 소리인가 싶지만, 꼭 그렇지는 않을 것으로 생각된다. OS 까지 고려해야 하는 상황을 만난적 없는 개발자도, 언젠가 만나게 될 경우를 대비하여 아주 기초는 준비를 해두어야 할 것이다.

특히 데브옵스 등을 고려해야 하는 상황이 생각보다 빨리 개발자에게 다가올 수 있음을 상기하고 대비를 하고 있어야 한다.

구성

1장에서는 개요를 설명하며, 2장에서는 리눅스의 사용자 모드에서 동작하는 시스템콜, 3장에서는 커널의 프로세스 생성 및 제거 관리, 4장 프로세스 스케줄러, 5장 메모리관리, 6장 기억장치, 7장 파일시스템, 8장 저장장치로 총 8장에 걸쳐서 OS를 설명한다.

설명 방식은 개요 설명 이후에 그림과 함께 코드 -> 결과확인의 순으로 진행된다. 여기서 과정 설명에서 텍스트로 이뤄진 내용을 도식화하여 보여주기 때문에 이해가 쉽다.

하지만 그 내용이 담고 있는 컨텐츠와 단어 그리고 문맥의 흐은 가볍게 읽기에는 초보자에게는 버거울수 있다. 따라서, 별도의 스터디나 참고 자료를 활용하여 추가적인 보충 활동을 수행해야 할 것으로 보인다.

본 책의 장점은 실제 코드를 통한 활동과 이미지를 통한 연상으로 인해 학습 능률이 높을 것으로 예상된다.

오늘 리뷰할 책은 '실습과 그림으로 배우는 리눅스 구조'이다.

제목만으로는 너무 간단하며, 꾸임이 없다.


이 제목에서 받은 느낌을 책을 읽는 내내 느꼈다.


바로 담백하나, 친절하다는 점이다.


설명이 필요한 것을 가급적 모두 설명하고 있으며, 그러한 설명으로 인해 다음으로 넘어가는것이 자연스러워지기 때문이다.

또한 화려하거나 꾸민것은 별로 없지만, 보기에 편안했다. 요즘 뜨고 있는 Medium 블로그 같다고 할까나.


그리고 부제로 있는 '개발자가 알아야 하는 OS와 하드웨어의 기초'가 아무래도 더 맞는 설명으로 보인다. 물론 리눅스 기준으로 설명했기 때문에 리눅스를 알아가는 것이 목적이지만, OS 전반에 대해 다루기 때문이다.


마치 대학시절 운영체제 수업을 좀 더 편안하게 바꿔놓은 느낌이다.


역시 리눅스의 상징 펭귄

표지에도 필요한 내용이다. 모두.


개발자 레벨업 프로젝트 -> 맞다. 우리가 흔히 개발자는 코딩하는 사람들이다.

그런데 그 개발자들은 보통 업무를 하기 위해 코딩만 생각하는 경우가 많은데, 그러면 어느정도 레벨에서 멈춰설 수 밖에 없다.

결국은 OS의 구조를 알고 그에 맞는 개발을 해야 좀 더 프로그램이 정교하게 돌아가게 된다.

그것을 이해하는데 도움을 주기 때문에 한단계 레벨업이 가능하다.


컴퓨터 공학 기초 -> 컴퓨터 공학과에서 다룬 운영체제 수업의 확장판이다.

운영체제 수업에서는 너무 딱딱한 느낌이 없지않았다면, 이 책에서는 좀 더 실습 지향적이고 그 안에서 이론을 발견하게 도와준다.

그래서 대학 수업이 어려웠던 자들에게 매우 큰 도움이 될 것이다. 또한 전공을 다른것으로 마쳤지만 학원 등을 통해 실무에 투입된 자들에게는 이것을 통해 어느정도 컴퓨터공학의 기초를 마련하는데 도움이 될 것으로 보인다.


책 정보

이 책은 따끈따끈한 책이다. 2019년 2월 20일 발행.

일본에서 지은 책이며, 번역서이다.


역자가 남긴 머릿글의 일부

마지막 줄인 OS의 구조에 대해 조금 더 알고 개발하고자 하는 분들, 혹은 리눅스에 대해 조금이라도 깊이있는 의문을 가져본 적이 있는 분들이라면 이 책을 읽어보시기를 적극적으로 권하고 있다.

나 또한 이에 공감하여 이 부분을 소개한다.


OS의 계층 구조와 현실을 그린 그림이 인상적

우리가 공부했고, 알고 있는 OS는 매우 계층적임을 보여 준 뒤, 현실을 그려놓았다.

사실 이게 맞기는 하다.

우리는 당초 레이어로 치면 응용계층과 연결된 OS외의 라이브러리 정도만 알아도 되어야 하는데, 실제 개발하다보면 크래시가 빈번하게 일어난다. 원래로 치면 wrapping되어있기 때문에 알아서 막혀있어야 하는 구조이지만, 아래의 그림처럼 직접 하드웨어와 맞닿아 있기도하고, 그것이 아니면 구현하기 어려운 아이디어들이 많기 때문이다. 문제해결도 어려워진다.

그래서 우리가 일반 응용프로그램 개발자라 할지라도 OS의 구조는 결국에는 필수가 된다. 성장하기 원한다면 말이다.

백마디 말보다 이렇게 그린 그림이 너무나 와 닿았다.

 

목차의 일부

목차는 다음과 같은 순서로 구성되어 있다.


CHAPTER 1. 컴퓨터 시스템의 개요

CHAPTER 2. 사용자 모드로 구현되는 기능

CHAPTER 3. 프로세스 관리

CHAPTER 4. 프로세스 스케줄러

CHAPTER 5. 메모리 관리

CHAPTER 6. 메모리 계층

CHAPTER 7. 파일시스템

CHAPTER 8. 저장 장치


챕터의 첫 장이다. 매우 심플

챕터는 간단하게 시작이 된다.


시스템 콜에 대해 설명하는 내용

시스템 콜에 대해 설명하는 내용이다. strace의 사용 방법과 이 것을 해석하는 방법을 이야기 하고 있다.

실제로 코드 작성시 C로 작성된 프로그램과 python으로 작성된 프로그램을 실행할 때 동일한 시스템콜을 사용한다는 것에 흥미가 생겼다.

단순히 지식적으로 알던 부분을 눈으로 확인시켜 주는 부분이 인상적이었다.

다른 부분들도 이러한 것이 많다.

아주 간단한 코드로 실습을 유도하고, 그것에 대한 설명을 정확하게 집어준다.

마치 무엇을 궁금해 할 것인지 알고 있던 듯이 말이다.

실습한 결과를 설명하는 내용

간단한 명령어를 통해 프로세스의 상태를 설명하는 도입부이다.

이것을 읽고있다보면 마치 강의를 듣고 있는 느낌이다.

책이기 때문에 일시정지할 필요도 없다.

프로세스의 시작과 종료까지의 상태변화 또한 대학수업 때 듣던 내용과 같은 부분이지만, 조금 더 편안하게 와 닿게 도와준다.

리눅스의 용처를 설명하는 맨 뒷장

 

리눅스는 각종 여러 도처에서 사용중이다. 이 책의 마지막 뒷표지 내용처럼 스마트폰, 도커, 클라우드 등 많은 영역에서 사용중이다. 20년 전에는 리눅스가 OS 중 하나라는 구나 정도만 알아도 살아가는데 지장이 없을 정도로 끼치는 영향이 적었다면, 이제는 너무나 일상적이다. 물론 윈도우, 맥도 큰 영역을 차지하지만 결국은 리눅스를 알아야 그 기본이 바로서는데 도움이 된다.

그러한 측면에서 이 책은 너무도 큰 도움을 줄 것으로 본다.

제목과 겉 표지가 개인적으로는 좀 아쉬울 정도로 내용이 알차다.


이 책을 추천하는 사람은 다음과 같다.

- 일반 응용프로그램을 포함한 많은 개발자

- 대학 전공을 다른 것으로 하였으나, 현업에 종사하는 개발자

- 개발자는 아니지만 개발자와 협업하는 PM이나 다른 업무 담당자


장점으로는

- 깔끔한 구성

- 개발자들에게 필요한 OS의 개념 정리

- 여러 도표를 사용하여 이해가 쉽도록 정리한 설명

- 적절한 실습을 통하여 체득할 수 있도록 함

- 내용에 비해 저렴한 가격


아쉬운 점으로는

- 제목이 조금 더 감각적이었다면

- 리눅스 실습이 매우 도움이 되기 때문에 리눅스를 다룰 수 있는 방법 몇가지를 예시로 들었더라면



나는 이 책을 다음과 같이 평가해 본다.

- 가격: 9/10

- 내용: 10/10

- 디자인: 6/10

- 구성: 10/10


디자인은 제목이 아쉬움이 남아 영향을 끼쳤다.


가격: 24,000원

전체 페이지: 303페이지


※ 이 리뷰는 '한빛미디어'로부터 도서를 제공받아 작성하였습니다.

 

대상 독자

- 리눅스 OS를 처음 접하거나, 접했지만 개념이 뚜렷하게 남지 않아 정리를 하고 싶은 개발자

- 묵직한 두께와 멋진 표지에 마음먹고 운영체제 책을 샀지만 책꽂이에 장식용으로 꽂혀있고 읽지는 않았지만 다시 읽기를 도전해보기 전에 가이드 같은 책을 보고싶은 개발자 

 

느낀점

어려운 개념은 책으로 이해하기는 쉽지 않다. 더군다나 전공서적이나 개발서적들은 하나같이 다른 방법으로는 설명하려 들지 않고 '글'로 만 설명하려드는게 대부분이다.

 

글보다 그림이 많은 책

 

 

최근 읽은 책 중 head first design pattern 을 읽으면서 다양한 방법으로 쉽게 개념을 설명해주는 책들이 확실히 처음 접하는 분야에서는 큰 도움이 된다는 걸 새삼 깨달았다.

리눅스 OS 역시 익숙한 단어지만 결코 그 내용은 익숙하지 않고, 또 접하기 어려운 분야인데, 
이 책은 글을 읽으면서 머릿속으로 구상해보면서 생각해야할 부분을 그림으로 표현해준다.

그래서 내가 읽으면서 생각했던 부분이 틀렸는지, 맞았는지를 파악하는데 큰 도움이 된다.

책은 약 300페이지이지만 그림을 다 빼면 100페이지가 될 정도 로 그림이 많다.

그래서 한 chapter를 공부하면 

'어? 벌써 다 봤네!' 라는 생각이 들정도로 쉽게 읽히고 빠르게 읽을 수 있다.

 

 

 

 

 

 

 

 

 

한 페이지의 절반이 그림이라서 너무좋다.

 

 

 

코드 실습

프로그래머는 눈보다 손으로 먼저 접해보고 결과를 보고싶어하지 않는가?

이 책은 그러한 프로그래머의 본능을 잘 아는지 그림으로 설명해 준 부분을 실제 어떻게 동작하는지를 보여주는 간단한 코드를 실어주었다. 

코드를 작성하고 결과를 확인하면서 개념을 다시 보는 것만큼 좋은 피드백은 없다. 그래서 개념이 더 명확히 남는 것 같다.

 

가이드

이 책은 목표가 명확하다.

산을 오를 때, 정상에 올라 주변 경관을 보고 싶어하는 사람도 있고, 산속에 어떠한 생물들이 사는지 꼼꼼히 산을 살펴보는 사람들이 있듯 목표에 따라 산을 오르는 방법은 갖가지다.

이 책은 '나무를 보지 말고 숲을본다' 는 말에 충실한 가이드 책이다. 그래서 깊은 내용을 다루지는 않지만 독자가 리눅스 OS 라는 산에 대해 전체를 조망하고 흐름을 알 수 있게 해준다. 그래서 더 깊은 내용을 궁금하게 유발해주는 책이다.

역시 눈으로만 봐서는 안된다. 코딩해야한다

이 책은 #리눅스 구조를 그림과 도표로 알기쉽게 설명하고 실습을 통해 실제 동작하는 것을 확인할 수 있다.

SE-ba5028c7-72ab-4fcd-93e6-39dbce35d634.jpg

 

 

책은 #리눅스 #시스템의 개요를 시작으로 #프로세스, #메모리, #파일 시스템 등 리눅스 구조 중 개발과 관련하여 주요한 부분을 설명하고 있다.

프로세스 파트에서는 프로그램의 처리 방식과 메모리에 할당하는 구조, 그리고 스케줄러 기능을 통해 각각 프로세스가 어떻게 진행되는지 살펴 본다.

메모리 파트에서는 메모리 할당과 #가상메모리를 이해하고 메모리 부족이나 #단편화 문제를 해결하는 방법에 대해 살펴보고, #캐시메모리와 #하이퍼스레드 기능 등을 설명하고 있다.

마지막으로 파일시스템 파트에서는 파일시스템의 종류와 각 저장장치의 성능 비교, 동작방식 등을 설명하고 있다.

SE-8619d99e-d2b0-4564-b556-f9fe4f032844.jpg

 

이 책은 프로세스부터 파일 시스템까지 챕터마다 실습 예제를 제공하고 있다. 예제 코드는 C와 파이썬으로 작성되어 있으나 해당 언어를 몰라 어려워할 필요는 없다. 예제 코드는 시스템 구조 이해를 위해 작성된 코드라 코드량이 많지 않고 따라하기 쉽게 작성되어 있다. 그리고 실행 결과도 그림으로 제공하고 있어 직접 작성한 코드의 실행 결과와 비교해 볼 수 있고, 프로세스나 메모리, 파일 시스템에서 작성된 프로그램이 어떻게 동작되는지 이해할 수 있다.

SE-26ea9a89-c182-413b-a4d2-4f9b26f16808.jpg

 

이번에 살펴본 실습과 그림으로 배우는 리눅스 구조 책은 프로그래머나 시스템 개발자를 위한 책이다.

 

시중에서 쉽게 볼 수 있는 리눅스관련 책들은 리눅스의 운영과 환경 설정이나 구축을 중심으로 설명하고 있는데 반해 이 책은 개발자가 작성한 프로그램이 리눅스 커널에서 어떻게 구현되고 동작하는지를 설명하고 리소스를 관리하고 보다 비용을 최소화 하면서 성능을 높일 수 있는 지식의 기회를 제공한다.

 

마무리로 서버프로그램 개발자나 DevOps 개발자들에게는 한번은 읽어 보기를 추천한다.

 

 

 

실습코딩과 그림을 통해서 리눅스의 구조와 OS시스템의 내부를 알수있습니다. 
 

 

개발자가 알아야 하는 OS 와 하드웨어의 기초, 리눅스 시스템의 부재를 달고 나온 책입니다.
최근 개발 플랫폼이 워낙 좋아서 개발자는 코딩과 프로세스 흐름에만 신경을 써도 되는 분위기인듯합니다.
하드웨어 자체 성능이 워낙 좋아서, 예전처럼 메모리 할당 해제를 하지 않아도 프로그램이 멈추는 일이 적어드는 일들이 있어서 기본에 조금 소홀해도되는... 즉, 개발자는 OS레벨에 구조에 많은 지식이 없어도 가능한 시대입니다.
대규모 시스템을 개발, 배포를 한 이후에 이유없이 메모리가 부족하다, 프로세스가 할당이 필요하다는오류 메시지를 만날때, 그때서야 OS 레벨의 구조를 확인하는 경우가 있습니다. 그때에도 리눅스 OS 환경에 대해서는 좋은 참고 서적이 되리라 봅니다.
 
[레벨업하고 싶은 개발자]
좀더 깊은 개발자로서의 레벨업을 위해서는 시스템(OS레벨)을 이해하고, 흐름을 알고 있어야 더 좋은 개발이 가능합니다.
OS 과목이 컴퓨터관련한 학과에 3~4학년 전공에 포함되어잇을 정도로 설명이 오래걸리고, 기초지식이 필요합니다.
이 책은 꽤나 쉬운 그림으로 설명을 하고자 노력한 흔적들이 보이고, 여러가지 실전 코딩을 통해서 OS동작원리를 실습할 수 있게 작성되어 있어서, 프로그램 성능을 개선하고 싶은분에게 좋은 도서가 될거같습니다.
 
[백문이불여일타 -> 실습을 통해서 학습가능함]
백번듣는것보다 한번 코딩해보는게 낫다. IT업계의 오래된 명언입니다.
이 책에 실습 코드를 따라서 진행하면, 분명 학습효과가 더 있을것입니다. 책 전체에 소스코드가 기록이 되어있으며, GitHub에도 공개가 되어있으니, 실습 환경 구성부터 따라하기 쉽습니다. 조금 아쉬운것은 실습환경이 CPU가 라이젠이라서 아직은 인텔CPU를 많이 사용하는 추세라 행여 결과가 조금 다를까 생각됩니다.
 
[그림을 통한 시뮬레이션]
파일처리시스템 단계를 설명하면서 그림을 통해서 디렉터리의 이동 처리의 흐름을 제공하고 있습니다.
이런식으로 도서 전체에 친절한 그림설명으로 쉽게 이해를 돕고 있습니다.
 

 

추천합니다!!

이 책은 linux를 기반으로 OS의 기능과 동작에 대해 아주 쉽게 이해할 수 있도록 구성된 책입니다. 

linux의 작동방식에 대한 설명과, 이를 확인해볼 수 있도록 예제코드를 제공하고 있습니다.

특히 사전지식이 없는 독자들도 OS에서 관리하는 프로세스, 메모리, 파일시스템에 대해 확실히 이해할 수 있도록 차트와 도식을 적극 활용하여 자세히 설명하고 있습니다.

OS의 동작을 이해하기 위한 좋은 첫걸음이 될 것이라 생각합니다.

 

2019-04-08-15-27-25.png

 

이 책의 대상 독자는 초급 개발자 혹은 비전공자라고 생각됩니다.

하지만 실습을 진행하기 위해서는 기초적인 linux 사용법에 대해서는 알고 있어야 합니다.

최근 데브옵스를 통한 개발방식이 일반화 되어 대부분 linux를 사용하셨을테니 큰 문제가 아닐수도 있지만, linux 경험이 없는 초보 개발자는 실습을 위한 선수지식이 조금 필요합니다.

 

많은 사람이 프로그래밍을 배우고 사용하고 있지만, 그 토대가 되는 OS에 대해 생각할 기회는 별로 없습니다.

C언어 이후 대부분의 프로그래밍 언어의 교재가 ‘Hello, world!’를 작성하는 예제로 시작합니다.

이후 언어의 문법과 기능들을 배워나가게 되는데, OS의 동작에 대해 알아야 할 경우는 거의 없습니다.

특히 최근에 개발된 언어일수록 구현하고자 하는 로직에 집중하도록 메모리 관리 등 많은 기능을 언어에 내장하다 보니 더더욱 OS의 기능은 내부에 대해 감춰지게 됩니다.

 

프로그램의 성능에 문제가 생기거나, OS가 없는 마이크로컨트롤러를 사용할 때 비로소 OS의 동작에 대해 관심을 가지게 되는 것 같습니다.

하지만, 최근 데브옵스 형태의 개발이 일반화되면서 특정 부분을 담당하기 보다는 수명주기 전체를 관리해야 하는 경우가 많아지면서 OS와 관련한 문제에 맞닥뜨릴 일이 많아졌습니다.

이젠 개발자들의 OS에 대한 이해도가 곧 프로그램의 성능을 좌우할 수도 있게 되었습니다.

OS의 동작과 성능지표에 대해 이해하고 코딩을 한다면 더 나은 개발자가 될 수 있을 것입니다.

 

리눅스구조.jpg

 

리눅스는 오픈소스 운영체제입니다.

 

컴퓨터 전공인 학생들은 수업 시간에 배우는데요.

현재 많이 사용하는 안드로이드 운영체제도 리눅스 기반입니다.

 

리눅스의 특징은 다중 사용자, 다중 작업, 다중 스레드를 지원합니다.

 

리눅스의 가장 큰 장점은 오픈소스라는 건데요.

윈도우와 유닉스는 소스 코드 저작권이 있어 비용이 듭니다.

 

반면 리눅스는 무료로 설치하고 이용할 수 있습니다.

 

개발자들은 리눅스를 서버로도 많이 이용합니다.

 

‘실습과 그림으로 배우는 리눅스 구조’는 리눅스 운영체제 구조를 이해하는 데 도움이 되는 책입니다.

 

1. 프로세스 관리

프로세스는 실행 중인 프로그램입니다.

 

프로세스 생성 목적은 프로그램 처리를 여러 개의 프로세스로 나누어 처리하는 겁니다.

 

많은 프로세스 요청은 운영체제에 무리가 가는데요.

이용하지 않는 프로세스가 실행 중이라면 메모리가 낭비됩니다.

 

사용이 끝나면 프로세스 종료해줘야 원활하게 작동합니다.

 

이 책에선 기본적으로 프로세스 관리하는 내용이 상세히 설명돼 있습니다. 

 

2. 메모리 관리

개인용 컴퓨터는 서버에 비해 메모리를 많이 차지하지 않는데요.

서버는 다수의 사용자가 이용하기 때문에 메모리를 많이 차지합니다.

 

메모리 문제가 생기면 컴퓨터는 동작을 멈추거나 강제로 종료합니다.

 

서버의 경우 메모리 관리가 잘못되면 서비스 운영에 문제가 되는데요.

서버는 메모리에 직접 접근하지 않고 가상메모리에 접근해 문제를 해결합니다.

 

Ps.

다케우치 사토루 저자는 리눅스 커널 개발과 서포트일을 주로 했는데요.

메모리 구조를 그림으로 설명해 글에 대한 이해를 돕습니다.

 

리눅스가 어떻게 돌아가는지 운영체제와 하드웨어에 대한 기초에 대한 궁금한 분들에게 도움이 되는 책입니다.

[부제: 개발자가 알아야 하는 OS와 하드웨어 기초] 제목과 책 표지만 놓고 보면 초보들이나 읽는 그런 책으로 치부될 수 있겠다는 생각이 들었다. 이 책은 스마트폰에서 클라우드까지 우리 사회에 IT가 있는 곳이라면 상당히 많은 곳에 침투해있는 리눅스의 구조를 다루는 책이다. 그림과 C 언어 코드로 쉽게 설명하고 있지만 배경지식이 전혀 없는 이들에게는 다소 어려울 수도 있다.

 

 

리눅스를 접해본 사용자라면 다들 겪는 의문이자 미제 문제인데 free 영역은 사용자 관점에서 available 영역인지, OS 관점에서 available 에 대한 부분이 있겠다. 책에서는 이 문제에 대해 그림으로 가볍게 다뤄주고 있겠다. OS 레벨에서 free 는 buff / cached 를 포함하고 있지 않지만 필요하다면 언제든지 가져다 사용할 수 있도록 설계되어 있다. 그림 한장으로 꽤 명쾌하게 풀이되고 있다고 할 수 있겠다.

 

 

여기 또 한장의 대표되는 그림을 가져왔는데 리눅스에서 페이지와 가상메모리의 관계에 대한 설명이다. 프로세스가 취하는 메모리가 실제 메모리의 pysical address 가 아닌 virtual address 에 매핑되고 있으며 그 매핑되는 정보는 페이지 테이블에 기록되어 있다는 그림이다. 이런 부분은 사실 우리가 평소에 신경 쓸 필요가 전혀 없게 느껴지지만 정작 로우 레벨의 프로그래밍이나 롱런( 꺼지지 않고 계속 메모리에 상주해야 하는 데몬 )해야 하는 프로그램을 개발하다보면 결국 어느순간 들여다봐야 하는 부분이다. 아주 작은 메모리 누수가 언제 우리 발등을 찍을지 모르니까.

 

 

 

마무리

본인은 이 책을 대부분 복습과 정리하는 느낌으로 훌훌 읽어볼 수 있었지만 갓 리눅스에 입문하는 사람에게 권할 수 있겠느냐는 질문에는 글쎄. C 언어를 완전히 무시하고는 보기 힘든 책일수도 있다. 또한 한번이라도 리눅스를 다뤄봤어야 조금은 편하게 읽어볼 수 있겠다. 시스템콜을 설명하기 위해 어쩔 수 없이 작성되어 있는 C 코드를 모두 무시하고 그냥 감으로 책을 읽겠다는 사람에게는 추천 할 수도 있다. 하지만 코드를 한줄한줄 다 파악해야 직성이 풀리는 독자에게는 권하지 않는다. 반대로 리눅스도 살짝 다뤄봤고, C 언어 코드도 스윽 보면 느낌오는 독자에게 이 책은 배경지식을 한층 더 업그레이드 해 줄 것이 분명하며 리눅스를 더 깊이 있게 다룰 수 있게 될 것이라고 확신하며 추천한다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
실습과 그림으로 배우는 리눅스 구조
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
실습과 그림으로 배우는 리눅스 구조
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
실습과 그림으로 배우는 리눅스 구조
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실