「動かしながらゼロから学ぶ Linuxカーネルの教科書」 買っちゃいました

昔の Linux は普通にカーネルをビルドするのは普通でした。でも最近はカーネルが巨大になってきたので、ビルドする事は無くなりました。

 

それ以降、カーネルを意識する事が無くなり、知識がどんどんと陳腐化しました。

 

f:id:itoh1023:20201121212707p:plain

そこで、この本を買って読んでます。知ってることも多々ありますが、知らなかった事も有ってなかなかためになります。

 

最初 Windows 10 上の WSL の Ubuntu 20.04 を利用してましたが、カーネルモジュールは使ってないことが分かりましたので、急遽 Vagrant 利用で Oracle VM Vertualbox の上の Ubuntu 20.04 を利用を開始しました。

 

いよいよこれからがカーネルビルド開始です。

 

 

デスクトップ PC を BTO で購入しました

最近藤井聡太二冠がPCの自作って話をしてて、久しぶりに自分も自作したいと思いました。
最近は様子が変わってきて、ケースには電源は付いてないし、電源も良いものは意外と高いし、ゲーム専用のPC なんか何十万円もします。
高級なグラフィックスボードが2~30万円もするんです・・・でも昔いた会社で業務用3D CAD 専用の高速グラフィックスボードを売ってましたが、100万円位してました。
で今流行の AMD の CPU あたりを考えてます。予算は 10万円未満。意外と Windows OS が1万円以上して高い!
今テレワークはノートPC Lenovo X220 にモニターとキーボードをつないで使ってます。CPU は Core i7 で速いはずと思いながら・・・もう8年前の機種なので、今の低価格CPUより確実にスピートは遅いのではと思ってます。
ただ自作は面倒なので、BTO でも良いかと思ってもいます。汎用の部品を使ってるので、小遣いで色々とアップデート出来ます。
---------------------------- 
と FB で書いて居たのですが、ついに今日 BTO で PC工房で購入しました。

f:id:itoh1023:20201004224914p:plain

一応ゲームPC構成らしいです。標準をすこし変えて、電源、メモリー容量と SSD にはこだわってみました。

勝手にコンパクトなケースかと思ったのですが、意外と大きくてびっくりしました。

早く来ないかな。

ゲームには興味ないので、AI のディープラーニングに使えると嬉しいです。

 

 
 

アメリカのコンピュータ学科での OS 教育で使われる教材OSに関して

以前から注目している、アメリカの著名大学で教材OS。

 

・MIT 

6.S081: Operating System Engineering

Xv6 (MITの先生が、なんで自分の大学で UNIX が開発出来なかったのか・・・って残念がった話は有名な様です。)

 

Stanford 大学

CS 140: Operating Systems (Spring 2019)

PintOS

 

CS140e – Embedded Operating Systems

ラズパイ上に組み込みOSを作るってコースです。

前回は Rust って言語でやろうとして失敗した様で、今は C で開発する方針に改められてます。やっぱり内容がハードな上、言語まで学習は半年のコースではたとえ Stanford の学生でもハードルが高かったのですね。

 

 

CMU

15-410, Operating System Design and Implementation

???

Mach OS にまだこだわりが有るようです。

 

・Harverd 大学

CS 161: Operating Systems (2019)

chickadee

他の大学は、殆どが C で書かれているOSが多い中、C++ を使って、珍しいです。

 

 

MIT Xv6 が RISC-V 対応になってました

2019年の秋から新学期が始まるアメリカの大学。

 

昨年度まで x86 ベースだった Xv6 が今年度から オープンアーキテクチャRISC-V に変更されてました!

6.S081: Operating System Engineering

 

さっそく macOS にインストールしました。

Installing on macOS

First, install developer tools:

$ xcode-select --install

Next, install Homebrew, a package manager for macOS:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Next, install the RISC-V compiler toolchain:

$ brew tap riscv/riscv
$ brew install riscv-tools

The brew formula may not link into /usr/local. You will need to update your shell's rc file (e.g. ~/.bashrc) to add the appropriate directory to $PATH.

PATH=$PATH:/usr/local/opt/riscv-gnu-toolchain/bin

Finally, install QEMU:

brew install qemu

この通りで簡単に出来ました。

 

Xv6 の教科書も改定されてました。

xv6: a simple, Unix-like teaching operating system

はじめに

やっぱりラズパイに戻ってきてラズパイ3を買っちゃいました。

教育用 OS PintOS のアマゾン本を書きたいと思ってます。(一応4冊アマゾン本を出版してます)

その前に今のOSの知識な無さすぎて、今OSの教科書を読んでます。

イメージ 1
具体的なプログラムと難しい内容を平易な説明で、とても良い教科書だと思います。第7版に関して翻訳が有り

本書は,大学の学部3~4年レベル,あるいは大学院修士課程1年レベルにおける,オペレーティングシステム入門コースの教科書として作成した。また,現場の専門家に役に立つことも想定している。本書では,オペレーティングシステムの根底にある諸「概念」を明確に記述している。基本的なデータ構造,コンピュータ構成,およびC言語などの高水準言語に読者が親しんでいることが,本書の前提である。オペレーティングシステムを理解する上で必要なハードウェアの話題は,第1章に含まれている。コード例には,大部分はC言語,一部でJava言語を用いた。ただし,これらの言語の詳細を知らなくても読者がアルゴリズムを理解できるようにしてある。本書では,各種の概念を直感的に記述している。重要な理論的結果を包含しているが,形式的証明は省略した。

と説明されている本です。

年末プリンタが壊れてブラザーにしました

年末の年賀状の時期に、8年使ったキヤノンのプリンタが壊れた(電源入れてもエラー)ので、最初2大メーカーのプリンタを調べました。

どれもこれもインク・カートリッジが小さくて色が6種と多く、たった2セット買うとプリンタ本体が買える値段と驚きの状況。

なので、ブラザーを買いました。A4 インクジェット複合機 PRIVIO DCP-J968N-W ホワイト (両面印刷/ADF/レーベル印刷/有線・無線LAN対応) とにかく多機能に驚きです。キャッシュバックが3千円あり、それ入れると約一万円と安価です。

インクが安くて、ADF(スキャナ原稿自動送り)無線LAN など便利です。2大メーカーのプリンタに比べると解像度などの仕様上は落ちますが、実用面は十分です。
書類整理でスキャナで自動原稿送り便利でした。

スマホからの出力・スキャン出来てホント便利ですね。

アメリカのOSの教科書「 Operating System Concepts」第9版

これがアメリカの大学で OS の入門コースで一番使われている教科書の様です。

スタンフォード大学のOSのコースでも利用してます。

今ざっと読んでます。終わってから、じっくりと演習問題も含めて読んでみたいです。



Table of Contents
Cover Page
Title Page
Copyright
Dedication
Preface
Content of This Book
The Ninth Edition
Programming Environments
Linux Virtual Machine
Supporting Website
Notes to Instructors
Notes to Students
Contacting Us
Acknowledgments
Contents
PART ONE: OVERVIEW
Chapter 1 Introduction
1.1 What Operating Systems Do
1.2 Computer-System Organization
1.3 Computer-System Architecture
1.4 Operating-System Structure
1.5 Operating-System Operations
1.6 Process Management
1.7 Memory Management
1.8 Storage Management
1.9 Protection and Security
1.10 Kernel Data Structures
1.11 Computing Environments
1.12 Open-Source Operating Systems
1.13 Summary
Exercises
Bibliographical Notes
Chapter 2 Operating-System Structures
2.1 Operating-System Services
2.2 User and Operating-System Interface
2.3 System Calls
2.4 Types of System Calls
2.5 System Programs
2.6 Operating-System Design and Implementation
2.7 Operating-System Structure
2.8 Operating-System Debugging
2.9 Operating-System Generation
2.10 System Boot
2.11 Summary
Exercises
Bibliographical Notes
PART TWO: PROCESS MANAGEMENT
Chapter 3 Processes
3.1 Process Concept
3.2 Process Scheduling
3.3 Operations on Processes
3.4 Interprocess Communication
3.5 Examples of IPC Systems
3.6 Communication in Client–Server Systems
3.7 Summary
Exercises
Bibliographical Notes
Chapter 4 Threads
4.1 Overview
4.2 Multicore Programming
4.3 Multithreading Models
4.4 Thread Libraries
4.5 Implicit Threading
4.6 Threading Issues
4.7 Operating-System Examples
4.8 Summary
Exercises
Bibliographical Notes
Chapter 5 Process Synchronization
5.1 Background
5.2 The Critical-Section Problem
5.3 Peterson's Solution
5.4 Synchronization Hardware
5.5 Mutex Locks
5.6 Semaphores
5.7 Classic Problems of Synchronization
5.8 Monitors
5.9 Synchronization Examples
5.10 Alternative Approaches
5.11 Summary
Exercises
Bibliographical Notes
Chapter 6 CPU Scheduling
6.1 Basic Concepts
6.2 Scheduling Criteria
6.3 Scheduling Algorithms
6.4 Thread Scheduling
6.5 Multiple-Processor Scheduling
6.6 Real-Time CPU Scheduling
6.7 Operating-System Examples
6.8 Algorithm Evaluation
6.9 Summary
Exercises
Bibliographical Notes
Chapter 7 Deadlocks
7.1 System Model
7.2 Deadlock Characterization
7.3 Methods for Handling Deadlocks
7.4 Deadlock Prevention
7.5 Deadlock Avoidance
7.6 Deadlock Detection
7.7 Recovery from Deadlock
7.8 Summary
Exercises
Bibliographical Notes
PART THREE: MEMORY MANAGEMENT
Chapter 8 Main Memory
8.1 Background
8.2 Swapping
8.3 Contiguous Memory Allocation
8.4 Segmentation
8.5 Paging
8.6 Structure of the Page Table
8.7 Example: Intel 32 and 64-bit Architectures
8.8 Example: ARM Architecture
8.9 Summary
Exercises
Bibliographical Notes
Chapter 9 Virtual Memory
9.1 Background
9.2 Demand Paging
9.3 Copy-on-Write
9.4 Page Replacement
9.5 Allocation of Frames
9.6 Thrashing
9.7 Memory-Mapped Files
9.8 Allocating Kernel Memory
9.9 Other Considerations
9.10 Operating-System Examples
9.11 Summary
Exercises
Bibliographical Notes
PART FOUR: STORAGE MANAGEMENT
Chapter 10 Mass-Storage Structure
10.1 Overview of Mass-Storage Structure
10.2 Disk Structure
10.3 Disk Attachment
10.4 Disk Scheduling
10.5 Disk Management
10.6 Swap-Space Management
10.7 RAID Structure
10.8 Stable-Storage Implementation
10.9 Summary
Exercises
Bibliographical Notes
Chapter 11 File-System Interface
11.1 File Concept
11.2 Access Methods
11.3 Directory and Disk Structure
11.4 File-System Mounting
11.5 File Sharing
11.6 Protection
11.7 Summary
Exercises
Bibliographical Notes
Chapter 12 File-System Implementation
12.1 File-System Structure
12.2 File-System Implementation
12.3 Directory Implementation
12.4 Allocation Methods
12.5 Free-Space Management
12.6 Efficiency and Performance
12.7 Recovery
12.8 NFS
12.9 Example: The WAFL File System
12.10 Summary
Exercises
Bibliographical Notes
Chapter 13 I/O Systems
13.1 Overview
13.2 I/O Hardware
13.3 Application I/O Interface
13.4 Kernel I/O Subsystem
13.5 Transforming I/O Requests to Hardware Operations
13.6 STREAMS
13.7 Performance
13.8 Summary
Exercises
Bibliographical Notes
PART FIVE: PROTECTION AND SECURITY
Chapter 14 Protection
14.1 Goals of Protection
14.2 Principles of Protection
14.3 Domain of Protection
14.4 Access Matrix
14.5 Implementation of the Access Matrix
14.6 Access Control
14.7 Revocation of Access Rights
14.8 Capability-Based Systems
14.9 Language-Based Protection
14.10 Summary
Exercises
Bibliographical Notes
Chapter 15 Security
15.1 The Security Problem
15.2 Program Threats
15.3 System and Network Threats
15.4 Cryptography as a Security Tool
15.5 User Authentication
15.6 Implementing Security Defenses
15.7 Firewalling to Protect Systems and Networks
15.8 Computer-Security Classifications
15.9 An Example: Windows 7
15.10 Summary
Exercises
Bibliographical Notes
PART SIX: ADVANCED TOPICS
Chapter 16 Virtual Machines
16.1 Overview
16.2 History
16.3 Benefits and Features
16.4 Building Blocks
16.5 Types of Virtual Machines and Their Implementations
16.6 Virtualization and Operating-System Components
16.7 Examples
16.8 Summary
Exercises
Bibliographical Notes
Chapter 17 Distributed Systems
17.1 Advantages of Distributed Systems
17.2 Types of Network-based Operating Systems
17.3 Network Structure
17.4 Communication Structure
17.5 Communication Protocols
17.6 An Example: TCP/IP
17.7 Robustness
17.8 Design Issues
17.9 Distributed File Systems
17.10 Summary
Exercises
Bibliographical Notes
PART SEVEN: CASE STUDIES
Chapter 18 The Linux System
18.2 Design Principles
18.3 Kernel Modules
18.4 Process Management
18.5 Scheduling
18.6 Memory Management
18.7 File Systems
18.8 Input and Output
18.9 Interprocess Communication
18.10 Network Structure
18.11 Security
18.12 Summary
Exercises
Bibliographical Notes
Chapter 19 Windows 7
19.1 History
19.2 Design Principles
19.3 System Components
19.4 Terminal Services and Fast User Switching
19.5 File System
19.6 Networking
19.7 Programmer Interface
19.8 Summary
Exercises
Bibliographical Notes
Chapter 20 Influential Operating Systems
20.1 Feature Migration
20.2 Early Systems
20.3 Atlas
20.4 XDS-940
20.5 THE
20.6 RC 4000
20.7 CTSS
20.8 MULTICS
20.9 IBM OS/360
20.10 TOPS-20
20.11 CP/M and MS/DOS
20.12 Macintosh Operating System and Windows
20.13 Mach
20.14 Other Systems
Exercises
Bibliographical Notes
Credits
Index