• Stars
    star
    5,337
  • Rank 7,739 (Top 0.2 %)
  • Language
    C
  • License
    Other
  • Created about 10 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

《30天自制操作系统》源码中文版。自己制作一个操作系统(OSASK)的过程

《30天自制操作系统》中文源码 —— OSASK

自己制作一个操作系统的过程,阅读过程会一边汉化源码,一边执行还有根据一些相关的内容进行代码的书写,欢迎大家交流。

运行方法,在 tolset 中新建一个 run 文件夹,把代码拷贝进去,然后根据系统版本运行 !cons_**.bat

一般都是使用 make run 运行代码,27天开始使用 make run_full。可以直接看书。 又或者,把tolset里的z_tools目录 复制到 本项目目录30dayMakeOS下。

完成效果

Screen

内容简介

第一周(第1天~第7天)

一开始首先要考虑怎么来写一个“只要一通电就能运行的程序”。这部分用C语言写起来有些困难,所以主要还是用汇编语言来写。

这步完成之后,下一步就要写一个从磁盘读取操作系统的程序。这时即便打开电脑电源,它也不会自动地将操作系统全部都读进来,它只能读取磁盘上最开始的512字节的内容,所以我们要编写剩余部分的载入程序。这个程序也要用汇编语言编写。

一旦完成了这一步,以后的程序就可以用C语言来编写了。我们就尽快使用C语言来学习开发显示画面的程序。同时,我们也能慢慢熟悉C语言语法。这个时候我们好像在做自己想做的事,但事实上我们还没有自由操纵C语言。

接下来,为了实现“移动鼠标”这一雄心,我们要对CPU进行细致的设定,并掌握中断处理程序的写法。从全书总体看来,这一部分是水平相当高的部分,笔者也觉得放在这里有些不妥,但从本书条理上讲,这些内容必须放在这里,所以只好请大家忍耐一下了。在这里,CPU的规格以及电脑复杂的规格都会给我们带来各种各样的麻烦。而且开发语言既有C语言,又有汇编语言,这又给我们造成了更大的混乱。这个时候我们一点儿也不会觉得这是在做自己想做的事,怎么看都像是在“受人摆布”。

渡过这个痛苦的时期,第一周就该结束了。

第二周(第8天~第14天)

一周的苦战还是很有意义的,回头一看,我们就会发现自己还是斩获颇丰的。这时我们已经基本掌握了C语言的语法,连汇编语言的水平也能达到本书的要求了。

所以现在我们就可以着手开发像样的操作系统了。但是这一次我们又要为算法头痛了。即使掌握了编程语言的语法,如果不懂得好的算法的话,也还是不能开发出来自己想要的操作系统。

所以这一周我们就边学习算法边慢慢地开发操作系统。不过到了这一阶段,我们就能感觉到基本上不会再受技术问题限制了。

第三周(第15天~第21天)

现在我们的技术已经相当厉害了,可以随心所欲地开发自己的操作系统了。首先是要支持多任务,然后是开发命令行窗口,之后就可以着手开发应用程序了。

到本周结束时,就算还不够完备,我们也能拿出一个可以称之为操作系统的软件了。

第四周(第22天~第28天)

在这个阶段,我们可以尽情地给操作系统增加各种各样的功能,同时还可以开发出大量像模像样的应用程序来。

这个阶段我们已经能做得很好了,这可能也是我们最高兴的时期。这部分要讲解的内容很少,笔者也不用再煞费苦心地去写那些文字说明了,可以把精力都集中在编程上(笑)。

对了,说起文字才想起来,正好在这个时期可以让我们的操作系统显示文字了。

免费赠送两天(第29天~第30天)

剩下的两天用来润色加工。这两天我们来做一些之前没来得及做,但做起来既简单又有趣的内容。

More Repositories

1

LearningMasteringAlgorithms-C

Mastering Algorithms with C 《算法精解:C语言描述》源码及Xcode工程、Linux工程
C
739
star
2

vue-json-ui-editor

Edit JSON in UI form with JSON Schema and Vue.js
JavaScript
504
star
3

YOS

YourtionOS 基于 30dayMakeOS (OSASK) 构建你自己的操作系统
C
248
star
4

DataminingGuideBook-Codes

《面向程序员的数据挖掘指南》源码
Python
139
star
5

YXWaveView

A water wave animation view (类似百度外卖的头像波浪效果)
Swift
138
star
6

SurgeConfigGenerator

Surge配置生成器 (快速生成属于你自己的 Surge 配置)
PHP
128
star
7

node-ip2region

IP/IPv6 to region on Node.js (IP/IPv6 地址到区域运营商)
TypeScript
116
star
8

SuperLogger

Save NSLog() to file and send email to developer
Objective-C
92
star
9

LearningOpenCV

Source code for Learning OpenCV 《学习OpenCV》源码及 Mac 运行工程
C++
78
star
10

objc-zen-book-cn

GitBook for 《禅与 Objective-C 编程艺术》
71
star
11

Alfred_ShadowsocksController

ShadowsocksX controller for Alfred
Python
70
star
12

Demo_CustomQRCode

Generate a colorful QRCode using CIFilter with Objective-C.
Objective-C
67
star
13

DataminingGuideBook

《面向程序员的数据挖掘指南》Gitbook
63
star
14

SimpleDeployer

A simple deployer base on Node.js . Easy deploy using git WebHook
JavaScript
36
star
15

HTTPDNS-OC

HTTPDNS 库 Objdctive-C 实现(使用DNSPod 、AliyunDNS、 Google ...)
Objective-C
34
star
16

Alfred_NumToCny

转换数字为人民币金额的Alfred Workflow
Python
30
star
17

Alfred_SourceTree

Alfred workflow to quickly find and launch your SourceTree bookmarks
Python
28
star
18

EventLogger

Log event count and event time in iOS
Objective-C
21
star
19

LearningCPointer

《征服C指针》源码整理
C
19
star
20

HTTPDNS-Swift

HTTPDNS 库 Swift 实现(支持 DNSPod 与 AliyunDNS )
Swift
18
star
21

AutomatorGenerateICON

Use automator batch generate icons
Shell
17
star
22

SwiftDesignPatterns

Swift设计模式 (iOS)
17
star
23

FreeProgrammingBooksCN

免费的计算机编程类中文书籍,欢迎投稿
CSS
12
star
24

LearningFunctionalProgramming

《Scala与Clojure函数式编程模式:Java虚拟机高效编程》学习代码记录
Scala
12
star
25

Demo_PDFtoHTML

Convert pdf to html using Node.js
JavaScript
11
star
26

Demo_OpenGLCamera

iOS camera preview add real time filter by GPU using OpenGL
Objective-C
11
star
27

GradleGuideBook

Android Gradle 插件中文指南
10
star
28

LearningSpringCloudAD

基于 Spring Cloud 微服务架构下广告系统设计与实现
Java
10
star
29

SwiftDesignPatterns-Demo1

Demo1 for SwiftDesignPatterns
Swift
10
star
30

node-erest

快速构建 Rest API 并自动生成API文档、Swagger、Postman文件与测试
TypeScript
8
star
31

liquid-swift

A Liquid syntax template engine for Swift.
Swift
7
star
32

Demo_LineAnimation

iOS Line and Object Animation Demo
Objective-C
7
star
33

Alfred_Gitignore

Easy get git ignore from Alfred workflow
6
star
34

yourtion.github.io

Source Code for my blog
JavaScript
6
star
35

go-short-url

高性能短链接跳转系统(支持访问记录、PV/UV统计分析)
Go
6
star
36

YXNetworkDiagnose-OC

Network Diagnose Framework for iOS and OSX
Objective-C
6
star
37

Alfred_SimulatorLauncher

Easy to launch simulator form Alfred
Python
5
star
38

LearningAndroid

《Android编程权威指南》第一版 源码(学习 Android 记录)
Java
4
star
39

SimpleCURD

一个简化后端开发,通过管理界面添加相应的数据表即可自动生成前端提交数据的API,以及后台查看管理数据界面的管理工具
JavaScript
4
star
40

Demo_VotingApp

使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用
JavaScript
4
star
41

Demo_CMYKImageUploader

Demo for CMYK Image upload and color process using Node.js
JavaScript
4
star
42

Electron-BatchCreateQRCode

Batch Create QRCode Electron APP
JavaScript
3
star
43

MonitorixMobile

Access Monitorix from Mobile (iPhone Android).Monitorix WebAPP
PHP
3
star
44

node-smtp-auth

Auth user from smtp server
TypeScript
3
star
45

Demo_SwiftFaceDetection

Detecting and tracking faces in camera live video using swift
Swift
3
star
46

node-ecache

Easy use Memory and Redis cache implementation
TypeScript
3
star
47

MIT-6.824

MIT-6.824 分布式系统课程 2022
Go
3
star
48

node-rekognition-sdk

ReKognition Node.js SDK
JavaScript
3
star
49

prometheus-manual-book-cn

Prometheus官网的非官方中文手册Gitbook版本
3
star
50

deno-sql

Powerful and Easy use SQL Query Builder on Deno From @leizm/sql
TypeScript
3
star
51

express-coroutine

Generator function and Async function to be used as middlewares in express like koa.
JavaScript
3
star
52

node-qq-mta-sdk

Node.js SDK for QQ MTA 腾讯移动统计数据接口API Node.js SDK
JavaScript
3
star
53

BestNPM-iOS

iOS client for https://npm.best/
Swift
2
star
54

LearningMicroService

Java
2
star
55

myVim

我的VIM配置
Vim Script
2
star
56

YMVC-PHP

Simple PHP MVC Framework
PHP
2
star
57

ydocker

《自己动手写Docker》实践与总结
Go
2
star
58

node-sm4-addon

基于 N-API 构建的 Node.js SM4 C++ 扩展,支持 Linux、Mac、Windows,性能卓越
JavaScript
2
star
59

mctimeline

JavaScript时间线展示
JavaScript
2
star
60

ReactNative-SuperID

SuperID ( Face OpenID ) SDK in ReactNative
Objective-C
2
star
61

LearningReactNative

《React Native入门与实战》实例
JavaScript
2
star
62

MGSpotyCollection

Beautiful ViewController with a CollectionView and amazing effects.
Objective-C
2
star
63

Demo_VideoRecord_iOS

Record video in iOS using swift and compress for upload
Swift
2
star
64

AlfredWorkflow

My Alfred Workflow
1
star
65

SwiftDesignPatterns-Demo2

Demo1 for SwiftDesignPatterns
Swift
1
star
66

TicTacToeGame

TicTacToe Game using GameKit and SpriteKit
Swift
1
star
67

BlogCodes

Code in my blog
HTML
1
star
68

AwesomeAPI

API test like Swagger
JavaScript
1
star
69

LearningJavaScript

JavaScript 学习记录
TypeScript
1
star
70

domain-proxy

基于泛域名的内网 HTTP(S) 穿透服务
Go
1
star
71

docker-node-ffmpeg

ffmpeg and Node.js in Docker
Dockerfile
1
star
72

node-alertover

AlertOver (https://www.alertover.com ) client for Node.js
JavaScript
1
star
73

qiniu-swift

qiniu sdk on swift4
Swift
1
star
74

DSBN-TS

Design SVG By Numbers ( DBN like language for building SVG )
TypeScript
1
star
75

RestfulClient

Use Swift bulid a restful clinet
Swift
1
star
76

MonitorixAPI

Provide a series of Monitorix API using PHP.
PHP
1
star
77

java-dubbo-monitor

Dubbo Monitor (forked from https://gitee.com/handu/dubbo-monitor) 因为项目需要重新修改并汉化更新
HTML
1
star
78

reading

My reading list
JavaScript
1
star
79

node-estat

Easy statistics
TypeScript
1
star
80

qiniu-ffmpeg

Use ffmpeg in Qiniu dora ufopv2(在七牛自定义数据处理中使用ffmpeg)
JavaScript
1
star
81

ghost-on-heroku

在 Heroku 上部署 Ghost 3.x
CSS
1
star
82

Demo_SocketIO_Game

基于 socket.io 的多人挖金子游戏
JavaScript
1
star
83

LearningGo

Learning Golang
HTML
1
star
84

Demo_OpenCV-DLib-FaceSwap

Use OpenCV and DLib to do face swap
C++
1
star
85

DataStructuresAndAlgorithms-Golang

Learn DataStructures & Algorithms using Golang
Go
1
star
86

node-apollo-conf

Apollo agent to load config
TypeScript
1
star
87

Demo_iOSRadiusAvatar

iOS RadiusAvatar Demo
Objective-C
1
star
88

pm2-guarded

通过 pmx 获取运行应用的 metrics 并上报到 Influxdb,通过 Grafana 进行展示
TypeScript
1
star