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

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎
OS 구조와 원리: OS 개발 30일 프로젝트

OS 구조와 원리: OS 개발 30일 프로젝트

한빛미디어

번역서

절판

  • 저자 : 카와이 히데미(Kawai Hidemi)
  • 번역 : 이영희
  • 출간 : 2007-04-14
  • 페이지 : 892 쪽
  • ISBN : 9788979144826
  • 물류코드 :1482
  • 초급 초중급 중급 중고급 고급
4.3점 (3명)
좋아요 : 24

수년 동안 터득한 OS 개발 비법을 공개합니다!

OS를 만드는 것은 더 이상 전문가 영역이 아닙니다.
컴퓨터 구조, 어셈블리어, 프로그램 동작원리까지 내공을 높여드립니다!

정말 쉽고 아주 친절합니다. 그러다보니 OS를 하나 만들고 나면 자연스럽게 어셈블리어, C 언어 포인터까지도 익숙해집니다. 컴퓨터 구조는 말할 것도 없습니다. 아무 생각없이 소스 제시하고 타이핑하고 실행해보는 식이 아닙니다. 필요한 원리와 지식을 자세하게 알려주어 독자 스스로 이해하고 솔루션을 찾게 만들어줍니다.

저자는 여러분과 함께 이 책에서 만들어볼 운영체제를 만들기 위해 수년수개월이 걸렸고 책을 집필하는 데만 1년이 넘게 걸렸습니다. 이 노하우를 독자 여러분은 30일만에 터득할 수 있습니다. 저자는 모놀리딕이니 하는 어려운 말을 풀어놓는 것보다 아주 초보적인 입장에서 모든 것을 설명합니다. 플로피디스크에 이미지를 쓰고 OS를 만들 수도 있지만, 플로피디스크가 없어도 에뮬레이터로 플로피디스크가 없는 최신 컴퓨터에서도 실습해볼 수 있습니다. 프로그램을 만든다고 하는 사람들이 보면 피가 되고 살이 되는 지식을 갖게 될 것입니다.

[만들어볼 OS 미리보기]

이 책에서 만든 OS를 기반으로 여러 가지 프로그램을 실행한 화면입니다. 물론, 이러한 프로그램도 만들어서 직접 올려봅니다.

콘솔 창을 띄워서 OS에 있는 파일을 볼 수도 있고, gview라는 애플리케이션을 이용해서 bmp, jpg과 같은 이미지를 볼 수도 있습니다.

tview라는 프로그램을 이용하게 되면 텍스트 파일을 열어서 내용을 볼 수 있고, 간단하게 calc 계산기 프로그램을 이용해서 산술 연산까지도 가능합니다. 그리고 더욱 더 흥미진진한건 invader라는 옛날 향수가 묻어나는 게임까지 만들어서 올려볼 수 있다는 것입니다.

이 정도의 프로그램들을 관리해내는 OS를 만들 수 있는 여러분이라면, 어떤 분야에서건 전문가로서 활약할 수 있는 좋은 밑거름이 되어줄 것입니다.

이제 도전해보십시오!

여러분 중에는 예전에 한 번쯤 OS 개발에 도전했다가 너무 어려워서 포기해버린 분이 계실지도 모르겠습니다. 그런 분에게 있어 OS 제작이 어렵지 않다고 얘기하는 필자의 말을 이해하기 힘들겁니다. 그러나, 단연코 이렇게 말하고 싶습니다. 어려워서 실패한 것이 아니고, 간단한 것이라고 설명해준 사람이 없었기 때문에 실패한 것입니다.
- 저자 서문에서

카와이 히데미 저자

카와이 히데미

1975년생. 어릴적 8비트의 PC가 보급될 당시, 소프트웨어를 살 수 없을 정도로 궁핍했기 때문에 프로그램을 만들어서 놀게 되었다. 그 후 프로그래밍 전문 교육을 거의 받지 않고 여기까지 와서인지, 보통 프로그래머가 할 수 있는 것은 할 수 없지만, 그러나 보통 프로그래머가 할 수 없는 것을 할 수 있다. 요컨대 괴짜 프로그래머. 대표작으로 에뮬레이터 V98, OS OSASK, 압축 tek 등이 있다.

이영희 역자

이영희

현재 노틸러스효성 주식회사 금융솔루션사업 본부의 부장으로 재직 중이며, 다년간 일본 히다찌 및 관련 계열사와의 SI프로젝트 및 패기지 개발에 주력하였다. 최근에는 효율적인 프로젝트 관리 및 품질 관리에 초점을 두고 국제 품질 인증 심사의 하나인 CMMI기반의 사내 품질경영시스템을 구축하고 있으며, 그와 관련 사내 제안 및 계약 프로세스의 표준화를 위해 활동하고 있다.

Chapter 0  개발을 시작하기 전에
1. 시작하기에 앞서
2. OS란 무엇일까?
3. OS 제작법 요모조모
4. 모르면 모르는 대로
5. OS를 만들려면 어떻게 해야 되나요?
6. OS를 만들 때의 난점
7. 1장 이후를 읽기 전에(중요!)
8. 이후의 내용 흐름

Chapter 1  PC 구조부터 어셈블리 입문까지
1. 어쨌든 해 보는 거야!
2. 결국 무엇을 한 것인가?
3. 어셈블러 첫 체험
4. 첫 체험의 어셈블러 다시 써 보기

Chapter 2  어셈블러 학습과 Makefile 입문
1. 텍스트 에디터 소개
2. 개발 재개
3. 부트섹터만 만들도록 정리
4. 이후를 위한 Makefile 도입

Chapter 3  32비트 모드 돌입과 C언어 도입
1. IPL 만들기
2. 에러가 나면 다시 하자
3. 18섹터까지 읽어보기
4. 10실린더만큼 읽어보기
5. OS 본체 작성하기
6. 부트섹터에서 OS 본체 실행시키기
7. OS 본체의 동작 확인하기
8. 32비트 모드 준비
9. C언어 도입
10. HLT 해 보기 (hrib00j)

Chapter 4  C언어와 화면 표시의 연습
1. C언어로 메모리에 쓰기 (harib01a)
2. 줄무늬 (harib01b)
3. 포인터에 도전 (harib01c)
4. 포인터의 응용(1) (harib01d)
5. 포인터의 응용(2) (harib01e)
6. 색 번호 설정 (harib01f)
7. 사각형 그리기 (harib01g)
8. 완성 (harib01h)

Chapter 5  구조체와 문자 표시와 GDT/IDT 초기화
1. 부팅 정보 받기 (harib02a)
2. 구조체 사용하기 (harib02b)
3. 화살표 표기 사용하기 (harib02c)
4. 문자 출력하기 (harib02d)
5. 여러 문자 출력하기 (harib02e)
6. 문자열 출력하기 (harib02f)
7. 변수 값 표시하기 (harib02g)
8. 마우스 커서 그리기 (harib02h)
9. GDT와 IDT의 초기화 (harib02i)

Chapter 6  분할 컴파일과 인터럽트 처리
1. 소스 파일 분할 (harib03a)
2. Makefile 정리 (harib03b)
3. 헤더 파일 정리 (harib03c)
4. 어제 남은 설명
5. PIC 초기화 (harib03d)
6. 인터럽트 핸들러 작성 (harib03e)

Chapter 7  FIFO와 마우스 제어
1. 키 코드 취득 (harib04a)
2. 인터럽트 처리는 재빠르게 (harib04b)
3. FIFO 버퍼 만들기 (harib04c)
4. FIFO 버퍼 수정하기 (harib04d)
5. FIFO 버퍼 정리하기 (harib04e)
6. 마우스 (harib04f)
7. 마우스로부터의 데이터 수신 (harib04g)

Chapter 8  마우스 제어와 32비트 모드 전환
1. 마우스 데이터 분석(1) (harib05a)
2. 조금 정리 (harib05b)
3. 마우스 데이터 분석(2) (harib05c)
4. 움직여라 마우스 (harib05d)
5. 32비트 모드의 길

Chapter 9  메모리 관리
1. 소스 정리 (harib06a)
2. 메모리 용량 체크(1) (harib06b)
3. 메모리 용량 체크(2) (harib06c)
4. 메모리 관리에 도전 (harib06d)

Chapter 10  겹치기 처리
1. 메모리 관리 계속 (harib07a)
2. 겹치기 처리 (harib07b)
3. 겹치기 처리의 고속화(1) (harib07c)
4. 겹치기 처리의 고속화(2) (harib07d)
	
Chapter 11  마침내 윈도우
1. 마우스에 대해 좀 더 알아보기 (harib08a)
2. 화면 밖의 지원 (harib08b)
3. shtctl의 지정 생략 (harib08c)
4. 윈도우 만들기 (harib08d)
5. 조금 놀아보기 (harib08e)
6. 고속 카운터 (harib08f)
7. 깜박거림 해소(1) (harib08g)
8. 깜박거림 해소(2) (harib08h

Chapter 12  타이머 - 1
1. 타이머 사용 (harib09a)
2. 시간 재기 (harib09b)
3. 타임아웃 기능 (harib09c)
4. 복수 타이머 (harib09d)
5. 인터럽트 처리(1) (harib09e)
6. 인터럽트 처리(2) (harib09f)
7. 인터럽트 처리(3) (harib09g)

Chapter 13  타이머 - 2
1. 간단하게 문자열 표시 (harib10a)
2. FIFO 버퍼 수정(1) (harib10b)
3. 성능 측정 (harib10c~harib10f)
4. FIFO 버퍼 수정(2) (harib10g)
5. 인터럽트 처리(4) (harib10h)
6. Sentinel을 사용한 프로그램 작성 (harib10i)

Chapter 14  고해상도와 키 입력
1. 성능 측정 (harib11a~harib11c)
2. 고해상도(1) (harib11d)
3. 고해상도(2) (harib11e)
4. 키 입력(1) (harib11f)
5. 키 입력(2) (harib11g)
6. 덤(1) (harib11h)
7. 덤(2) (harib11i)

Chapter 15  멀티태스크 - 1
1. 태스크 스위치(1) (harib12a)
2. 태스크 스위치(2) (harib12b)
3. 간단한 멀티태스크 해 보기(1) (harib12c)
4. 간단한 멀티태스크 해 보기(2) (harib12d)
5. 스피드 업 (harib12e)
6. 스피드 측정 (harib12f)
7. 멀티태스크 좀 더 다루기 (harib12g)

Chapter 16  멀티태스크 - 2
1. 태스크 관리의 자동화 (harib13a)
2. Sleeve 해 보기 (harib13b)
3. 윈도우 늘리기 (harib13c)
4. 우선순위 매기기(1) (harib13d)
5. 우선순위 매기기(2) (harib13e)

Chapter 17  콘솔
1. IDLE 태스크 (harib14a)
2. 콘솔 만들기 (harib14b)
3. 입력 변환 만들기 (harib14c)
4. 문자 입력하기 (harib14d)
5. 기호 입력하기 (harib14e)
6. 대문자와 소문자 (harib14f)
7. Lock 키 대응 (harib14g)

Chapter 18  dir 커맨드
1. 커서 점멸 제어(1) (harib15a)
2. 커서 점멸 제어(2) (harib15b)
3. Enter키 대응 (harib15c)
4. 스크롤 대응 (harib15d)
5. mem 커맨드 (harib15e)
6. cls 커맨드 (harib15f)
7. dir 커맨드 (harib15g)

Chapter 19  애플리케이션
1. type 커맨드 (harib16a)
2. type 커맨드 수정 (harib16b)
3. FAT 대응 (harib16c)
4. 소스 정리 (harib16d)
5. 마침내 첫 애플리케이션 실행 (harib16e)

Chapter 20  API
1. 프로그램 정리 (harib17a)
2. 한 글자 표시 API(1) (harib17b)
3. 한 글자 표시 API(2) (harib17c)
4. 애플리케이션 종료 (harib17d)
5. OS의 버전이 바뀌어도 변함이 없는 API (harib17e)
6. 애플리케이션의 이름을 자유롭게 (harib17f)
7. 레지스터에 주의하기 (harib17g)
8. 문자열 표시 API (harib17h)

Chapter 21  OS 지키기
1. 문자열 표시 API의 재도전 (harib18a)
2. 애플리케이션을 C언어로 만들기 (harib18b)
3. OS 지키기(1) (harib18c)
4. OS 지키기(2) (harib18d)
5. 예외 처리 서포트하기 (harib18e)
6. OS 지키기(3) (harib18f)
7. OS 지키기(4) (harib18g)

Chapter 22  C언어로 애플리케이션을 만들자
1. OS 지키기(5) (harib19a)
2. 버그 발견 돕기 (harib19b)
3. 애플리케이션의 강제 종료 (harib19c)
4. C언어로 문자열 표시(1) (harib19d)
5. C언어로 문자열 표시(2) (harib19e)
6. 윈도우 표시하기 (harib19f)
7. 윈도우에 문자나 사각형 그리기 (harib19g)

Chapter 23  그래픽의 여러 가지
1. malloc 만들기 (harib20a)
2. 점 그리기 (harib20b)
3. 윈도우 리프레시하기 (harib20c)
4. 선 긋기 (harib20d)
5. 윈도우 닫기 (harib20e)
6. 키 입력 API (harib20f)
7. 키 입력으로 놀기 (harib20g)
8. 강제 종료로 윈도우 닫기 (harib20h)

Chapter 24  윈도우 조작하기
1. 윈도우 변환하기(1) (harib21a)
2. 윈도우 변환하기(2) (harib21b)
3. 윈도우 이동하기 (harib21c)
4. 마우스로 윈도우 닫기 (harib21d)
5. 애플리케이션 윈도우를 입력 모드로 변환하기 (harib21e)
6. 마우스로 원하는 윈도우 선택하기 (harib21f)
7. 타이머 API (harib21g)
8. 타이머 취소 (harib21h)

Chapter 25  콘솔 늘리기
1. BEEP 사운드 (harib22a)
2. 색 늘리기(1) (harib22b)
3. 색 늘리기(2) (harib22c)
4. 윈도우의 초기 위치 (harib22d)
5. 콘솔 늘리기(1) (harib22e)
6. 콘솔 늘리기(2) (harib22f)
7. 콘솔 늘리기(3) (harib22g)
8. 콘솔 늘리기(4) (harib22h)
9. OS답게 만들기(1) (harib22i)
10. OS답게 만들기(2) (harib22j)

Chapter 26  윈도우 이동의 고속화
1. 윈도우 이동을 빠르게(1) (harib23a)
2. 윈도우 이동을 빠르게(2) (harib23b)
3. 윈도우 이동을 빠르게(3) (harib23c)
4. 윈도우 이동을 빠르게(4) (harib23d)
5. OS 기동 시 콘솔을 하나만 표시하기 (harib23e)
6. 콘솔을 좀 더 많이 만들기 (harib23f)
7. 콘솔 닫기(1) (harib23g)
8. 콘솔 닫기(2) (harib23h)
9. start 커맨드 (harib23i)
10. ncst 커맨드 (harib23j)

Chapter 27  LDT와 라이브러리
1. 먼저 버그를 고치자 (harib24a)
2. 애플리케이션 실행 중에 콘솔 닫기 (harib24b)
3. 애플리케이션 지키기(1) (harib24c)
4. 애플리케이션 지키기(2) (harib24d)
5. 애플리케이션 사이즈 조정하기 (harib24e)
6. 라이브러리 (harib24f)
7. make 환경 정리 (harib24g)

Chapter 28  파일과 일본어 표시
1. alloca(1) (harib21a)
2. alloca(2) (harib21b)
3. 파일 API (harib21c)
4. 커맨드 라인 API (harib21d)
5. 한글 표시(1) (harib21e)
6. 한글 표시(2) (harib21f)
7. 한글 표시(3) (harib21g)

Chapter 29  압축과 간단한 애플리케이션
1. 버그 수정 (harib26a)
2. 파일 압축 (harib26b)
3. 표준 함수 (harib26c)
4. 비사각형 윈도우 (harib26d)
5. bball (harib26e)
6. 인베이더 게임 (harib26f)

Chapter 30  고도의 애플리케이션
1. 커맨드 라인 계산기 (harib27a)
2. 텍스트 뷰어 (harib27b)
3. MML 플레이어 (harib27c)
4. 화상 뷰어 (harib27d)
5. IPL 수정 (harib27e)
6. CD-ROM 기동 (harib27f)

Chapter 31  개발을 마친 후
1. 앞으로는 혼자서 만들어가기
2. OS의 크기에 대해
3. OS를 잘 만드는 요령
4. 다른 사람에게 사용하게 한다면
5. CD-ROM 내의 소프트웨어에 대해
6. 권장하는 오픈 소스
7. 후서
8. 작별(졸업식)
9. 부록

부록: 한글 입력

칼럼
1. 데이터도 '실행'할 수 있다? 기계어도 '표시'할 수 있다?
2. 캐스트를 사용하면 p라는 것은 사용하지 않아도 됩니까?
3. 역시 포인터는 잘 모르겠어~
4. p[i]라는 것은 뭡니까?
5. 구조체의 간단한 설명
6. 10진수에서의 버림은?
7. 기동 3초 후에 count를 0으로 하는 이유
8. 이런 작은 개선에 의미가 있는 거야?
9. return해선 안 돼?
10. 키보드의 사양?
11. FAT의 압축
12. 이것으로 OS 만들기 입문이라니!

처음부터 책을 집필하기 위해 마음먹고 진행한 것이라기 보다는 일본 내 한 커뮤니티 같은 곳에서 강좌 식으로 연재된 것을 모아 출판 된 듯한 느낌이 큽니다.

몇 분이 앞서 지적하셨듯 일본 특유의 실용성이 두드러진 책입니다. 저자가 아무 것도 모른 채 진행해도 좋다고 하지만, 그래도 알면 좋겠지요. 다시 말하자면 몰라도 되는 부분은 철저히 모른 채 가리고 진행을 한다는 말입니다.

어셈블러로 자신이 개조한 nask라는 어셈블러를 사용합니다.
코드는 다른 어셈블러와 다를 게 없지만... 왜 nask같은 독자적인 툴을 쓰는지 솔직히 이해가 안갑니다. 또 컴파일 이후 실행 과정 또한 애매하게 넘어가고 맙니다. 일본 책이니 일본에서 만든 툴을 쓰는게 어찌 보면 당연하지만.. 그런 점이 조금 맘에 안듭니다.

다시말하자면, 여기서 알게 된 노하우는 이 책 이외에는 적용하기 어렵다는 느낌을 받는단 말이죠...

하지만 OS가 어떻게 동작하는지 몰라 궁금해하는 것보다 백 번 낫습니다. 책 내용 또한 친절한 편이기 때문에 부담없이 접할 수 있습니다. 하지만 책이 매우 두껍기 때문에 상당한 인내심을 갖고 접하는 것이 좋을 듯합니다

당연 이 한 권의 책으로 OS가 뭔지 알게 되리라는 생각같은 것은 하지 않았습니다. 이 책을 선택하신 분들도 그러리라 생각합니다. 당연히 책 내용 모두를 철저히 마스터하기보다는 예제를 따라하며 이해하고 넘어가는 수준에서 만족하는 것이 좋을 것 같습니다.

386 CPU 이상의 PC 환경 (Windows) 에서 OS를 개발하는 실용서이다. 즉, 예제가 충분히 제공되며, 개발환경 또한 제공되어 초보자도 쉽게 따라 할 수 있게 했다.

"만들면서 배우는 OS커널의 구조와 실습"이란 책과 비슷할 거라고 생각하고 책을 구입했지만, 이 책은 구어체로 초보자들에게 필요한 내용들을 쉽게 설명하고 있다.


개인적으로 아쉬운 점은 ARM, MIPS 등과 같은 Core에 적용했으면 더 좋았을거라고 생각한다. 이런 것들은 개발 환경이 거의 사용이고 직접 실험하기 위해서는 보드가 필요하니깐 PC환경에서 손쉽게 사용할 수 있는 x86 CPU를 기반으로 한것 같다.

어차피 CPU의 동작은 거의 비슷하므로 기본 원리를 이해하는데는 충분하다. x86의 독특한 레지스터의 충분한 이해가 또한 필요하다.

책이 없어도 저자의 홈페이지에 예제 코드가 제공되므로 직접 실험해 보고 필요하면 책을 구매해도 좋을것 이다.

확실히 일본 서적의 번역서의 경우
다른 번역서보다 좀더 내용이 친숙하게(?) 다가오는거 같다.
예전 디자인패턴 책을 읽어본후에 느낀 점이지만..



이 책은 처음 책이 나오기 전 소개를 봤을때부터
내심 기대하던 책이다.
왠지 재미있을거 같아서 내심 기다렸는데


일단은 만족한다.
저자분이 아무것도 몰라도 된다. 라고 앞에서
호언장담을 하고 시작하는데
(머 사실 아무것도 모르면 안되겠지만)


그정도로 어떤 프로그램 실행을 위한
설명을 신경을 많이 쓴거 같다.


책의 문체도 딱딱한 사무적인 문체가 아니라
그냥 일상적인 대화형이라서 읽는데 부담도 없는거 같다.


내용 중간중간에 저자분의 재미없는 농담(?)도
애교로 봐줄만 하다. -_-;;;


아직 읽고 있는 중이지만
현재까지는 재미있다.


내용이 딱딱하지 않아
재미있게 읽을수 있는 책인거 같다.


OS 에 대해 궁금하신 분들은
읽어볼만한 거 같다.

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

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원 무료배송
닫기

리뷰쓰기

닫기
* 상품명 :
OS 구조와 원리: OS 개발 30일 프로젝트
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

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

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

오탈자 등록

닫기
* 도서명 :
OS 구조와 원리: OS 개발 30일 프로젝트
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
OS 구조와 원리: OS 개발 30일 프로젝트
구입처*
구입일*
부가기호*
부가기호 안내

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

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

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

닫기

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

자료실

최근 본 상품1