操作系统开发

我是如何学习写一个操作系统(一):开篇

点点圈 提交于 2019-11-28 08:42:31
前言 有人说程序员的三大浪漫分别是编译原理、操作系统和计算机网络 在之前完成了一两个小软件和网站后遇见了编译原理,也不知道为什么就傻傻的学,还写了一个 从零写编译器的系列学习笔记 ,不过都是小打小闹,只能算作摸到了一点点入门的门槛。再后来想深入学习的时候,因为暑假在家很多书买来的话再带去学校很麻烦,就索性找了一本操作系统的书,也不懂原理就撸了一个玩具型的操作系统 几句感概 在身边同学都在埋头在各种Web方向,做出各种酷炫的东西,也深深觉得自己Web方向的技术栈太浅浅,之前利用React全家桶+Electron和node做后台的一个 聊天软件 ,以现在来看略显幼稚,另外的Java虽然是我的第二门语言可是到现在也不算上得台面。下学期就大三了,越临近就业就越焦虑,下学期可能会更侧重应用方向吧。 写这个系列的原因 因为跟着书上撸的操作系统属于小的玩具型的操作系统,所以很多涉及到操作系统比较深入的原理都没有进行学习,所以这个系列想作为自己学习操作系统的记录,也就是对原理性的学习和结合实现一个玩具型的操作系统 FragileOS FragileOS就是之前实现的一个玩具型操作系统,之前叫这个名字是因为它真的很Fragile,代码结构不好,功能不多,原型基本是来自别人的(后面会提到) 代码在github上已经分享出来了: FragileOS 主要界面 正式开始 这个学习笔记可能用到的有四本书:

8.22 李丹丹作业

倾然丶 夕夏残阳落幕 提交于 2019-11-28 08:17:43
1.什么是编程? 通过编程语言做一些事情,写一堆文件。 2.简述计算机五大组成。 控制器,运算器,存储器,输入设备,输出设备。 控制器控制硬件,运算器分为算术运算和逻辑运算;存储器分为主存(相当于人的大脑)和外存(相当于笔记本);输入设备用鼠标/键盘/麦克风/U盘等,输出设备有显示器/打印机/U盘。 3.操作系统有什么用? 提供给我们一个一个接口,让我们不再关心硬件的复杂操作,让复杂操作简单化 4.计算机由哪三大部分组成? a.应用程序(软件):和操作系统交互 b.操作系统(软件):和硬件交互 c.硬件:硬件直接交互 5.简述操作系统和应用程序的启动流程? 操作系统的启动:启动软件,首先启动操作系统找软件在硬盘上的位置; 操作系统本质也是一个软件,启动操作系统也需要找到操作系统在硬盘中的位置(要找就必须通过操作系统) 应用程序的启动: a.双击qq--》让操作系统通知CPU(企鹅操作系统提供给你的)(找到qq在外存的位置) b.cpu让内存去外存读取qq的数据,qq数据进入内存 c.启动qq 6.编程语言的分类有哪些?并评估各个分类的优缺点。 机器语言(优点:执行速度非常快,直接和硬盘交互;缺点:开发速度非常慢) 汇编语言(优点:比机器语言开发效率高;缺点:比机器语言执行效率低) 高级英语,分为编译型语言和解释型语言。 编译型语言(通过设备的翻译形式)类似于谷歌翻译

day 02

混江龙づ霸主 提交于 2019-11-28 06:06:50
目录 一、计算机基础之编程 1.什么是编程语言 2.什么是编程 3.为什么要编程 二、计算机组成原理 1.控制器 2.运算器 3.控制器+运算器(计算机的中央处理器CPU) 4.存储器 内存(主存) 外存 5.CPU+内存+外存(计算机的三大核心组件) 6.输入设备 7.输出设备 8.计算机的五大组合部分补充 1.CPU相关 2.存储器相关 3.总线 4.启动计算机的流程 5.硬盘的工作原理 6.固态硬盘 三、计算机的操作系统 1.什么是操作系统 2.什么是文件 3.什么是应用程序 4.为什么要有操作系统 1.应用程序 2.操作系统 3.计算机硬件 5.操作系统的作业 6.操作系统和应用程序的启动 四、编程语言分类 1.机器语言 2.汇编语言 3.高级语言 1.编译型 2.解释型 4.主流编程语言介绍 1.C语言 2.C++ 五、网络的瓶颈效应 一、计算机基础之编程 1.什么是编程语言 python和中文英文一样,都是一门语言,所谓编程语言就是人与计算机之间沟通的介质 2.什么是编程 编程指的是基于某种编程语言的语法格式将自己脑子中想要让计算机作的事,写到文件中 结果是一堆文件,构成了程序。 3.为什么要编程 更好的使用计算机,与提高工作效率。像是两个国家的人交流,需要学习翻译一样 二、计算机组成原理 计算机分为五大组成部分,分别是:控制器、运算器、存储器、输入设备、输出设备。

day02

馋奶兔 提交于 2019-11-28 06:04:38
什么是编程? 编程就是通过一些编程语言写一些东西,表达自己的想法 简述计算机五大组成。 控制器、运算器、存储器、输入设备、输出设备 操作系统有什么用? 操作系统位于应用程序和硬件之间,负责协调管理计算机资源和软件资源。操作系统把对硬件的复杂性,封装成一个个简单易用的接口供人们使用。 计算机由哪三大部分组成? 硬件,与硬件直接交互 操作系统(软件),与硬件交互 应用软件,与操作系统交互 简述操作系统和应用程序的启动流程? 操作系统启动流程: 开机,启动临时操作系统 临时操作系统去CMOS存储器上寻找操作系统的存储路径 操作系统启动,临时操作系统关闭 应用程序启动流程: 双击应用程序图标 双击图标就是给操作系统指令,告诉操作系统应用程序在硬盘的位置,让操作系统启动这个路径 操作系统接到指令操控CPU,给内存发指令 内存接受CPU指令,给硬盘发出指令,硬盘读取应用程序代码至内存,应用程序启动 编程语言的分类有哪些?并评估各个分类的优缺点。 机器语言 优点:执行速度非常快,直接和硬件交互 缺点:开发速度非常慢 汇编语言 优点(相较于机器语言而言):开发速度快 缺点(相较于机器语言而言):执行速度慢 高级语言 优点(较于汇编语言):开发效率高 缺点(较于汇编语言):执行效率低(调试bug非常复杂) 编译型语言 优点(较于解释型语言):执行效率高 缺点(较于解释型语言):开发效率低 解释型语言

Day02作业

隐身守侯 提交于 2019-11-28 06:01:59
作业 什么是编程? 能够用机器语言表达自己的想法! 通过编程语言去实现计算机的特定功能! 简述计算机五大组成。 控制器、运算器、存储器、输入设备、输出设备 操作系统有什么用? 代替人与机器交流! 提供给我们一个个接口,让我们不再关心硬件的复杂操作,让复杂操作简单化! 计算机由哪三大部分组成? 应用程序、操作系统、硬件 简述操作系统和应用程序的启动流程? 操作系统:开机通电,启动临时操作系统,在CMOS存储器中找到操作系统在硬盘中的地址,启动操作系统,关闭临时操作系统 应用程序:双击应用,查找应用在硬盘中的位置,打开软件! 编程语言的分类有哪些?并评估各个分类的优缺点。 编译型语言:执行效率高,开发效率低 解释型语言:开发效率高,执行效率低 简述网络的瓶颈效应。 网络通信的时间(10ms)远远大于执行程序的时间(0.01ms) 因此在使用解释型语言进行编译时可以忽略执行时间! 来源: https://www.cnblogs.com/CaptainZq/p/11396177.html

day02

断了今生、忘了曾经 提交于 2019-11-28 06:01:54
1.什么是编程? 表达自己的想法,实现一些东西 编程:通过变成语言做一些事情,写py文件 2.简述计算机五大组成 CPU(大脑) 控制器(控制) ==控制硬件(运算器,存储器,输入设备,输出设备)== 运算器(运算) ==算术运算(1+1)== ==逻辑运算(下雨是不是要带伞)== 储存器 主存 内存(4gb-8gb) 优点:速度快 缺点:容量小,断掉即消失 外存 机械硬盘-》128g固态硬盘 优点:容量大,永久出现储存 缺点:速度慢 I/O设备(input/output设备) 输入设备 ==输入信息,键盘/鼠标== 输出设别 ==输出信息,显示屏/打印机/u盘== 3.操作系统有什么用? ==提供我们一个个接口,让我们不再关心硬件的复杂程度== 4.计算机由哪三大部分组成? ==(有了操作的系统之后)== 应用程序(软件):和操作系统交互后 操作系统:和硬件的交互 硬件:硬件直接交互 5. 简述操作系统和应用程序的启动流程? ==应用程序的启动== 双击qq--》让==操作系统==通知==cpu==(企鹅操作系统提供给你的)(找到qq在外存的位置) ==cpu==让==内存==去外存读取qq的数据,qq数据进入内存 启动qq ==操作系统的启动== 启动软件,首先启动操作系统软件在硬盘上的位置;操作系统本质也是一个团结,启动操作系统也是需要找到操作系统在硬盘中的位置

Day02 计算机的组成与编程语言

ε祈祈猫儿з 提交于 2019-11-28 06:01:45
目录 一 计算机的组成 1 硬件 CPU 控制器 CPU 运算器 存储器 输入设备 输出设备 2 软件 操作系统 应用软件 什么是文件 应用软件的启动 操作系统的启动 二 编程语言 什么是编程 1 机器语言 2 汇编语言 3 高级语言 编译型语言 解释型语言 网络的瓶颈效应 一 计算机的组成 1 硬件 CPU 控制器 控制硬件 CPU 运算器 算术运算 逻辑运算 存储器 主存(内存) 外存(机械硬盘,固态硬盘) 机械硬盘 磁道(存储数据) 机械手臂(读取数据) 扇区(一个扇区512KB) 固态硬盘 由电容组成,算法支持 输入设备 键盘,鼠标,U盘 输出设备 音响,显示屏,打印机,U盘 2 软件 操作系统 32位操作系统:一次性能读取32个二进制位的操作系统 64位操作系统:一次性能读取32个二进制位的操作系统(向下兼容) 接受应用程序/人的外部指令,然后控制硬件,操作系统与硬件交互 应用软件 应用软件与操作系统交互 什么是文件 操作系统提供的一个虚拟的单位 应用软件的启动 双击应用软件,操作系统通知CPU找到软件在硬盘中存储的路径 CPU控制内存读取软件的数据 打开软件 操作系统的启动 启动软件就是操作系统找到软件在硬盘中的存储位置,但是操作系统本身也是一个软件,所以开机时要先启动操作系统 临时操作系统(ROM存储器) 计算机出厂的时候已经写死

计算机基础作业

江枫思渺然 提交于 2019-11-28 06:01:09
什么是编程? 编程就是通过某种编程语言与计算机进行交流,从而通过计算机完成自己想做的某些事情。这种与计算机交流的过程就叫做编程。 简述计算机五大组成。 1.控制器,对硬件进行控制 2.运算器,进行逻辑与算数运算 3.存储器,对数据进行存储 4.输入设备,输入信息 5.输出设备,输出信息 操作系统有什么用? 把对硬件的复杂操作封装成接口,提供给用户使用 计算机由哪三大部分组成? 1.硬件设备 2.应用程序 3.操作系统 简述操作系统和应用程序的启动流程? 操作系统的启动:操作系统代码由硬盘读入内存(BIOS程序),CPU运行操作系统代码(CMOS存储器),运行成功后操作系统接管操作硬件的工作。 应用程序的启动:应用程序代码有硬盘读入内存,CPU运行应用程序码,运行成功即可使用应用程序。虽然应用程序的启动和操作系统的启动有着异曲同工之处,但是得明确一点:装了操作系统之后才能装应用程序,才有应用程序这个概念。因此上述应用程序对硬件控制的每一步操作,都依赖于操作系统的帮助。 编程语言的分类有哪些?并评估各个分类的优缺点。 机器语言,只使用0和1进行编程,运行速度快,编译速度慢 汇编语言,使用英文单词代替二进制数,相较于机器语言运行速度慢,但提高了编译速度 高级语言,加一层映射,使之更符合人类的语言习惯 编译型语言,高级语言的一种,一次性翻译,翻译完成后运行,bug难以调试,故开发效率低

day02

。_饼干妹妹 提交于 2019-11-28 06:00:42
什么是编程? 使用者通过编程语言来让计算机实现某种事情或者状态 简述计算机五大组成。 控制器,运算器,输入设备,输出设备,存储器, 操作系统有什么用? 为我们提供一个可视化的UI窗口(平台)进行操作,同时替使用者进行硬件之间的交互 计算机由哪三大部分组成? 应用软件,操作系统,硬件 简述操作系统和应用程序的启动流程? 计算机内置的临时操作系统启动,去CMOS上寻找操作系统的存储路径,并启动 操作系统在磁盘中寻找应用程序(软件)的存储地址,并启动 编程语言的分类有哪些?并评估各个分类的优缺点。 机器语言:执行速度最快,开发效率最低 汇编语言:相较于机器语言,执行速度慢,开发效率高 高级语言:相较于汇编语言,执行速度慢,开发效率高 简述网络的瓶颈效应。 网络通信的延迟远远大于执行程序所造成的延迟时 可以忽略执行程序所造成的延迟,使用开发效率相对较高的解释性语言更为便利 来源: https://www.cnblogs.com/Henry121/p/11396133.html

作业

早过忘川 提交于 2019-11-28 06:00:41
什么是编程? 通过写电脑语言写个文件 简述计算机五大组成。 1控制器。2运算器。3储存器。4输入设备。5输出设备 操作系统有什么用? 提供给我们一个一个接口,让我们不再关系硬件的复杂操作,让复杂操作简单化 计算机由哪三大部分组成? 1.应用程序(软件):和操作系统交互 2.操作系统(软件):和硬件交互 3.硬件:硬件直接交互 简述操作系统和应用程序的启动流程? 1操作系统的启动 2临时操作系统 3临时内存 编程语言的分类有哪些?并评估各个分类的优缺点。 1汇编语言:开发开发效率高.执行效率低 2高级语言:执行效率高。开发效率低 3解释性语言:开发效率高。执行效率低 4编译型语言:执行效率高。开发效率低 简述网络的瓶颈效应。 网络通信的时间(10ms)远远大于执行程序的时间(0.01ms)--》程序的执行效率完全没必要考虑了--》(网络的应用程序)解释型语言--》python 操作系统-(单机操作的应用程序)--》编译型语言 来源: https://www.cnblogs.com/zhangjianguoweiwei/p/11396132.html