操作系统开发

计算机基础

风流意气都作罢 提交于 2019-12-02 06:16:50
一、计算机基础之编程 什么是编程语言 语言是两种食物之间的沟通介质。python是一门编程语言,编程语言是人与计算机之间沟通的介质。 什么是编程 编程是指程序员将自己的想让计算机做的事通过某种编程语言写入一个文件中,其结果就是生成一些列文件,这一些列文件就是程序。 编程的目的 人们想让计算机帮助人类完成工作,就需要通过编程实现。 二、计算机的组成 计算机由控制器,运算器,存储器,输入设备,输出设备五大组成部分。其中控制器与运算器组成计算机的中央处理器(CPU)。 控制器 计算机的指挥系统 运算器 计算机的运算系统,包括: 算数运算,如:1 + 1 = 2 逻辑运算,如:1是否等于2? 中央处理器(CPU) 中央处理器包括控制器、运算器和高速缓冲存储器及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。 存储器 计算机的存储系统,包括内部存储与外部存储。 3.1 内存 计算机内临时存储数据的硬件设备,CPU直接与其交互,如内存条。 优点:存取速度快 缺点:容量小,基于电存储,断电即消失 3.2 外存 计算机内永久存储数据的硬件设备,计算机不与其直接交互,如软盘,磁带,磁盘,U盘等。 优点:存储容量大,可永久存储数据。 缺点:存取速度慢。 计算机三大核心组件 CPU,内存,外存组成计算机的三大核心组件。 输入设备 计算机输入信息的设备,如键盘,鼠标,扫描仪,麦克风等。

浅谈单片机开发---操作系统

时间秒杀一切 提交于 2019-12-02 02:08:45
工作中分析了一下现状,项目繁多,需求不一,团队成员单片机开发经验缺乏,编程风格各异,几乎没有可以重复利用的模块,无现成提高开发效率与测试的工具。 为使开发更迅速,流程更标准,同时也让系统模块化更强,拥有更好的复用性,需要有一个单片机操作系统。现有的操作系统琳琅满目,开源的无技术支持,商用的价格高,最重要的是我们的系统虽然繁杂,但更倾向于控制型,使用这些操作系统对团队开发要求较高,而且占用资源多,所以使用这种类型的操作系统就显的大才 小用了。但我们更不希望裸奔,为此,我们需要开发适合自己团队的系统。 我们的目标是:1、传统的开发模式;2、标准化的开发流程;3、高效的开发效率;4、丰富的接口(或工具) 有了这个大体目标,根据我们现有或规划的项目需求,设计了我们的操作系统AEOS。 AEOS工作简介与原理: AEOS是一种非调度式操作系统,结构小巧,极易移植,占用空间小,可根据需要裁减。由于其非调度的特性,符合我们传统的开发模式,但对于多任务开发则较为麻烦。它提供了任务管理、时间管理、事件管理等基本功能。 AEOS以定时的方式执行任务,为了每个任务都可以获得CPU资源,要求任务执行时间尽可能的短,如果时间较长则需要通过状态机来实现,等待资源或者延迟处理的时候通过跳转状态来释放CPU资源。 任务管理: AEOS最多支持32个普通任务和32个紧急任务,没有优先级之分

开发操作系统的各种方法

无人久伴 提交于 2019-12-02 02:08:18
开发操作系统的方法也是各种各样的。 笔者认为,最好的方法就是从既存操作系统中找一个跟自己想做的操作系统最接近的,然后在此基础上加以改造。这个方法是最节省时间的。 但本书却故意舍近求远,一切从零开始,完完全全是自己从头做起,这是因为笔者想向各位读者介绍从头到尾开发操作系统的全过程。如果我们找一个现成的操作系统,然后在此基础上删删改改的话,那这本书就不能涉及操作系统全盘的知识了,这样肯定无法让读者朋友满意。不过由于是全部从零做起,所以篇幅长些,还请读者朋友们耐下心来慢慢看。 要开发操作系统,首先遇到的问题就是使用什么编程语言,这次我们想以C语言为主。“啊,C语言啊?”笔者仿佛已经听到大家抱怨的声音了(苦笑)。“这都什么年代了,用C语言多土啊”、“用C++多好呀”、“还是Java好”、“不,我就喜欢Delphi”、“我还是觉得Visual Basic最好”……大家个人喜好习惯各不相同。这种心情笔者都能理解,但为了讲解时能简单一些,笔者还是想用C语言,请大家见谅。C语言功能虽不多,但用起来方便,所以用来开发操作系统刚好合适。要是用其他语言的话,仅讲解语言本身就要花很长时间,大家恐怕就没兴趣看下去了。 在这里先向大家传授一个从零开始开发操作系统的诀窍,那就是不要一开始就一心想着要开发操作系统,先做一个有点操作系统样子的东西就行了。如果我们一上来就要开发一个完整的操作系统的话,要做的东西太多

OS Recommendations【推荐操作系统】

♀尐吖头ヾ 提交于 2019-12-01 22:42:34
推荐操作系统(内容提要) 1.Ceph Dependencies(Ceph的依赖) 1.1 Linux Kernel(Linux内核) 1.2 glibc 2.Platforms(平台) 2.1 Dumpling(0.67) 2.2 Cuttlefish(0.61) 2.3 Bobtail(0.56) 2.4 Argonaut(0.48) 2.5 Notes(附注) 2.6 Testing(测试) ‍ 1.Ceph依赖 ‍ 在较新的Linux发行版上部署Ceph,这是我们推荐的通用法则。 1.1Linux内核 —— Ceph的核心客户端: 目前,我们建议: — v3.6.6或更高版本V3.6稳定系列 — v3.4.20或更高版本V3.4稳定系列 —— btrfs文件系统:如果你想在btrfs上运行Ceph,我们推荐使用一个最新的Linux内核(V3.5或更高版本)。 1.2Glibc —— syncfs(2):对非btrfs文件系统(像XFS和ext4)而言,在一台服务器上运行了多个Ceph-osd守护进程时,Ceph使用syncfs(2)系统调用时效率高得多(此功能在2.6.39内核和glibc-2.14加入)。Ceph的新版本(v0.55及更高版本)不依赖于glibc的支持。 2.系统平台 下面的表格展示了Ceph需求和各种Linux发行版的对应关系。一般来说

Linux 入门

Deadly 提交于 2019-12-01 18:54:10
操作系统的分类 Windows系列操作系统,Unix类操作系统,Linux类操作系统,Mac操作系统 unix 1965年以前,电脑不像现在这么普及,不是一般人能碰的起的,除非是军事或者研究机构,才有计算机的存在。 当时一台机器顶多提供30台终端(主机+键盘+显示器),用于连接 Linux 提问:为什么要去学习Linux? 同学甲可能要问,超哥你介绍了这么多有关Linux的知识,但我还是懵逼,我从小学去网吧打泡泡堂用的就是Windows,上了这么多年学也是用的Windows,为什么要让我学这个Linux? 同学乙可能要问,听起来Linux好像很高大上,如果我放弃Windows去学Linux,用不了多久就会升职加薪当上总经理赢取白富美吗?想想还很激动。。。 那么超哥要回答了:   如果Windows意味着生活和游戏,那么Linux久代表着严谨和工作,学习Linux代表着你要开发软件,你要测试程序,你要维护服务器。那么依据呢?请看如下: 由此可见,无论你是python后端开发,还是python测试开发,又或者是爬虫、数据挖掘开发,统统都必须学会Linux,这是开发者必须的技能。   我们都知道Linux这玩意是在电脑上运行的,所以说Linux就是一组软件,问题是这个软件是操作系统还是应用程序?而且Linux可以在哪些种类的电脑上运行呢?Linux来自哪里?为什么Linux不收钱?

GNU

有些话、适合烂在心里 提交于 2019-12-01 16:00:10
文章用来认识GNU,表达对GNU的尊重。 我的理解是,GNU开发了很多好的能在Linux上运行的程序套件(尤其是GCC、BASH等),同时GNU也有自己亲生的操作系统内核“GNU Hurd”,最后GNU程序套件没有和Hurd打包发布,而是和Linux。有人用“Linux”称谓操作系统时,会引起误会,忽略GNU,也忽略了GNU的贡献。如果引用操作系统时,GNU/Linux才是正确的称谓;如若引用内核时,可以称Linux。据说,Linux开源也是收到了GNU的影响。 了解更多,参考 https://www.gnu.org/ Richard Stallman之GNU/Linux问答 要了解更多,你还可以阅读我们关于 Linux和GNU工程 的网页、关于 为什么是GNU/Linux? 的网页和关于 从未听说过GNU的GNU用户 的网页。 当人们看到我们使用并建议GNU/Linux作为系统名称,而其他人称之为“Linux”时,他们会问许多问题。此处列举了常见问题以及我们的回答。 为什么你称该系统为GNU/Linux而不是Linux? 为什么名称是重要的? GNU和Linux究竟是什么关系? 为什么大多数人会叫该系统为“Linux”? 我们是否总要说“GNU/Linux”而不要说“Linux”? 如果没有GNU,Linux还会这么成功吗? 如果我们不按这样的要求分裂人群,对社区不是更好吗?

《Linux操作系统-系统移植》第11章 WiFi模块移植-第1节 USB WiFi模块移植(RT3070)(B-wpa_supplicant移植与使用)

删除回忆录丶 提交于 2019-12-01 15:35:45
1.5 wpa_supplicant移植与使用 所需包下载地址: Libnl: http://www.infradead.org/~tgr/libnl/files/ Openssl: http://mirrors.ibiblio.org/openssl/source/ wpa_supplicant: http://w1.fi/releases/ 1.5.1交叉编译libnl-3.2.25.tar.gz libnl是为了方便应用程序使用netlink接口而开发的一个库。这个库为原始netlink消息传递以及不同的netlink family专用接口提供了一个统一的接口。 1.解压 $ tar -xvf libnl-3.2.25.tar.gz 2.配置 $ cd libnl-3.2.25/ $ mkdir install $ ./configure --host=arm-none-linux-gnueabi --prefix=$PWD/install 配置libnl用到bison and flex工具,使用下面的命令安装: $ sudo apt-get install bison $ sudo apt-get install flex 3.编译 $ make $ make install 4.移植文件 将编译出的库文件拷贝到交叉编译器默认库文件搜索目录下 $cd install/lib

认识Linux

只谈情不闲聊 提交于 2019-12-01 10:09:24
操作系统界有三大巨头,他们分别是苹果操作系统、Linux操作系统、Windows操作系统,深入追究下来,他们有同一个祖宗,叫Unix。 所有以Linux内核为基础开发的系统都统称为Linux系统。比如Cent OS、Android、Ubuntu等都可以叫做Linux系统,Linux系统他是一个家族,他们有共同特性。但不同于Windows操作系统。 Linux操作系统与Windows操作系统区别一: 内核不同,Linux操作系统使用Linux内核,Windows操作系统使用NT内核;Linux内核代码开源,NT内核代码闭源,也就是说任何人都可以拿着Linux内核代码改成自己喜欢的风格来用,不过前提是你得是技术大牛。 Linux操作系统与Windows操作系统区别二: Linux是免费的,Windows是收费的,不过不代表所有Linux都是免费的,有一部分进行商业运作的Linux是收费的,比如Redhat Linux。 Linux操作系统与Windows操作系统区别三: Windows软件支持丰富,而Linux软件支持就很少了,因为Windows硬件驱动厂商支持全面,Linux驱动这块不如Windows全面,比如百分之九十九的游戏都可以在Windows上运行,而Linux上只有很简陋的游戏。 Linux操作系统与Windows操作系统区别四: Windows易用性高

操作系统,难道不是大公司的生意吗???

放肆的年华 提交于 2019-12-01 10:03:54
操作系统,难道不是大公司的生意吗? 移动互联网爆发的一个重要前提是,智能手机的诞生。基于安卓或iOS的操作系统,海量开发者可以开发自己的应用,供任何一款智能手机用户使用,极大促进了移动互联网应用的繁荣。类比手机发展,现阶段的物联网产品处于“前功能机”阶段:产品的软件功能在出厂时就基本固定了,上层软件应用开发和底层硬件紧密耦合,很难由第三方开发者为硬件开发应用。这导致物联网软件应用迭代慢、成本高,生态闭塞。 要解决该问题,物联网需要一套对软件开发者更友好的、相对统一的操作系统,使软件开发的过程从硬件开发中脱离出来。这样只需要基于操作系统,即可快速开发上层应用,让物联网硬件和软件不再强绑定。“将移动互联网的软件开发体验带到物联网世界来”——以此为目标,卓晟互联于2018年推出了 JOSH(JOSH Open Smart Hardware)操作系统 。 不能。原因主要有三: 1、物联网硬件资源很有限,通常只有十几KB~几MB的RAM和ROM,但是Android运行至少需要64MB的RAM和128MB的ROM。通俗的说,就是“资源有限跑不动Android”。 2、专为手机设计,所以只需要对接少量且固定的传感器等外设接口。但是物联网设备的传感器种类繁多、不固定,Android无法广泛兼容。 3、在物联网场景下Android的安全性问题更加暴露。 既然Android用不了,下一个问题就是

计算机基础小结

夙愿已清 提交于 2019-12-01 09:55:27
一、计算机之编程 1.1 什么是编程语言 编程语言是人与计算机交流的介质。 1.2 什么是编程 编程就是使用编程语言编写成一个个的计算机可以识别的文件 1.3 为什么要编程 为了奴役计算机,解放劳动力,帮助人类完成一个个任务。 二、计算机组成原理 2.1计算机组成的五大部分 2.1.1CPU 2.1.1.1控制器 控制硬件 2.1.1.2 运算器 进行逻辑运算+算术运算 2.1.2 内存 临时存储数据的硬件 优点(相比较于外存):速度快 缺点(相比较于外存):临时存储/断电即消失 2.1.3 外存 永久存储数据的硬件 优点(相比于内存):永久存储 缺点(相比于内存):速度慢 2.1.4 输入设备 输入信息的硬件,如键盘/鼠标/U盘 2.1.5 输出设备 输出的信息的硬件,如显示器/打印机/U盘 2.1.6 I/O设备 即可输入的信息,又可以输出的信息的硬件,称为I/O设备 2.1.7 32位和64位 2.2.1 32位 一次性能读取32个二进制位的操作系统 2.2.2 64位 一次性能读取64个二进制位的操作系统 2.3多核CPU 可以同时完成多件事的CPU,如CPU则一个大的CPU集成了4个小的CPU 2.4 硬盘的工作原理 2.4.1 机械硬盘工作原理 机械手臂:寻找数据 磁道:存储数据 扇区:划分磁道 平均寻道时间:由于工业水平的限制,为5ms 平均延迟时间:以7200r