2019-10-13 22:07:21 sinat_27672523 阅读数 328
  • 自己动手从0到1写嵌入式操作系统

    这不是rtos源码分析的课程,而是为初级的同学设计,从基础原理讲师,一步步不断迭代设计rtos的课程! 用不到【2000行代码,汇编代码仅18行】(不含注释)实现一个精巧的可以运行在ARM Cortex-M内核芯片上的RTOS! 该RTOS功能与ucos类似,具体实现不同。学习之后,再去学习ucos之类的系统将没有什么问题。

    9125 人正在学习 去看看 李述铜

如何选择一款适合自己操作系统、Windows、Mac还是Linux?

作者:我们都很努力着

简介:电脑已经逐渐离不开我们生活,但是如何选择一个我们最佳,最适合的电脑操作系统就成了一些困难选择人士的一个问题。不考虑硬件,只说系统,最少内存8G起步,CPU也得4核以上吧

本文章适合程序员、小资人士或者喜欢折腾的人士。当然如果你想给自己打造一个独一无二的电脑操作系统的环境、那么你可以看看本篇文章。

img

一、Windows操作系统怎么样?选择那个合适!

个人计算机在中国的普及,大约是从1995年开始的,也就是说,从那时到现在大约已经24年、这24年,Windows从MS-DOSWindows 95、Window 98、XPWindows 7、Windows 8、Windows 10。经历了众多版本。

其他的不说,只说Windows10(如果你还没升级Windows10,快升级吧!它会让你的工作效率成倍提高)。

1、各版本的优缺点

版本
特点
功能
推荐指数
Windows10家庭版 支持大部分电脑和平板
win10核心功能,设备加密(InstantGo)、企业应用 sideloading(PC与移动设备互连)、移动设备管理、微软账户、普通版Windows Update
Windows10专业版 win10核心功能
域、群策略管理、BitLocker、企业模式IE浏览器(EMIE)、Assigned Access 8.1、远程桌面、Azure主动目录、企业商店、企业数据保护、商业版Windows Update、CBB当前分支更新 ☆☆☆☆
Windows10企业版 大中型企业用来防范针对设备、身份、应用和敏感企业信息的现代安全威胁的先进功能。 域、群策略管理、BitLocker、企业模式IE浏览器(EMIE)、Assigned Access 8.1、远程桌面、Azure主动目录、企业商店、企业数据保护、商业版Windows Update、CBB当前分支更新,加入Direct Access(直接访问)、Windows To Go Creator、AppLokcer、BranchCache、开始屏幕组策略控制、Granular UX、凭据保护、设备保护、LTSB长期服务分支更新。 ☆☆☆☆
Windows10教育版 win10基础功能,移除了商店等无用的内置软件,相当于是一个纯净的操作系统 域、群策略管理、BitLocker、企业模式IE浏览器(EMIE)、Assigned Access 8.1、远程桌面、Azure主动目录、企业商店、企业数据保护、商业版Windows Update、CBB当前分支更新,加入Direct Access(直接访问)、Windows To Go Creator、AppLokcer、BranchCache、开始屏幕组策略控制、Granular UX、凭据保护、设备保护 ☆☆☆

2、如何选择适合自己的Windows操作系统?

现在这是个高速发展的时代,可我们大部分人其实使用以上最多的可能是Windows10家庭版。这个可能是由于我们购买笔记本的时候预装的免费的原版操作系统就是Windows10家庭版,很多人都买回来懒得折腾直接就使用了。

Windows10家庭版只不过适合普通办公人士,直接拿来用没有问题。但是对于我们程序员或者是开发者来说。Windows10家庭版部分功能是不开放的,需要安装Windows10专业版、或者是Windows10企业版。使用开放的全部功能。所以推荐使用Windows10企业版

总结:选Windows就选Windows10企业版或者Windows10专业版,使用功能无限制,主要是相对于其他操作系统(Mac、Linux)来说,满足功能的软件数量及其庞大,几乎可以找到任何满足功能的软件,唯一的确定缺点就是不是很美观,广告,流氓插件多,需要安装对应的工具来去掉这个问题,如广告终结者、360安全卫士(需要关闭内置广告消息等设置)。系统推荐☆☆☆☆☆

二、Mac操作系统怎么样?

自从MacBook Pro自2006年进入我们眼帘以来,苹果电脑已完美的硬件外表 华丽、人性化的操作系统绝佳组合,一路受到好评。是商务人士。程序开发者备受青睐的产品。

苹果电脑的操作系统和windows的最大区别是底层内核不同,前者为Unix,后者为NT。Mac是基于Unix内核的图形化操作系统,而linux是一套自由使用和自由传播的类Unix系统。但苹果电脑系统和其硬件绑定,不过也有人在普通电脑上安装黑苹果系统,使用体验和原版基本差不多,但是无法发挥其最佳性能。

我也曾经在我的联想G470上安装过黑苹果,当时折腾了3天,查了好多资料,找到了大神修改的驱动才启动安装成功并适配了显卡驱动。但是发挥不出最佳体验。不建议使用。想体验的可以在某宝找找看。

我大概使用了3年左右的正版MAC系统(自己放血买了13年的pro顶配版),给我的使用体验就是,人性化,操作简单。基本的办公软件,开发软件等都有,并且在高速补充着。未来这个电脑会在星巴克或者是一些书店能经常看到。

总结:Mac的话开发者建议选MacBook Pro,最新的高配即可,运存至少16G以上。这个 系统会让你感觉到飞起。但是价格相对较贵。系统没得说,比较钱花在那里。最近听说苹果笔记本只要系统升级13,可以使用IPAD实现分屏。大家可以关注一下。系统推荐☆☆☆☆

三、Linux操作系统如何选择?

1、Linux是什么?

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

它适用于程序员及其开发者等技术人员使用,暂不适合商务人士使用。相对于Windows和Mac来说,它免费,在所有电脑上均兼容可安装并发挥其性能。唯一是这块的变种较多。

版本
特点
描述
推荐指数
Linux Mint
开箱即用,少许配置即可,新手友好
用起来挺顺手的
基于 Ubuntu,目前排行榜第一
☆☆☆☆☆
Manjaro
软件丰富,
兼容性好
包管理做的不错
一个命令安装几乎所有软件
基于Arch Linux,目前排行榜第二
推荐Gmone版本
☆☆☆☆
Deepin Linux
大量创新功能
对一些中国软件的良好支持
极佳的视觉体验
安装简单、方便
一款国内的 Linux 发行版,Hiweed Linux,Ubuntu一种变形。
☆☆☆☆
Ubuntu
软件丰富,
社区支持性好
国内比较青睐此版本
基于Debian GNU/Linux
☆☆☆
Centos
具备极高的稳定性与可靠性
企业使用较多
软件丰富较
Linux发行版之一
☆☆☆
Arch Linux
软件包管理体系大
轻量级选手
它容易被轻松扩展和配置成为任何想要的系统类型
上手难度大
基于 x86-64 架构的 Linux 发行版

Elementary OS 类macOS的外观
轻量级
高效的桌面环境
精选好用的软件集
基于 Ubuntu 的发行版了,它号称是”快速和开放“版的 macOS 和 Windows ☆☆
feren OS
有开始菜单
扁平化设计
现代化的外观
对新手友好
提供 Wine,方便运行 Windows 程序
基于 Linux Mint 的桌面 Linux 发行版
☆☆
Zorin OS
类 Windows 界面及操作
Windows 用户上手容易
用户基数较大
社区支持不错 实在是漂亮
上游发行版是 Ubuntu。内置了 Wine,能支持很多 Windows 下的应用软件 ☆☆
KDE Neon
最新的 KDE 套件
稳定的 Ubuntu LTS 基版本
流畅、稳定、漂亮的扁平化桌面
KDE Neon 是基于 Ubuntu LTS 长期支持版打造的
☆☆
Nitrux
可以自己定制应用
包含 KDE 软件集
极度简约的漂亮桌面
Nitrux 基于 Ubuntu 的不稳定开发分支来构建的,所以 Ubuntu 的所有优点一并具有 ☆☆

Linux这块我使用过MintManjaroDeeplinUbuntuCentos7这几种。其中在国内使用最简单的是Deeplin,应用商店中对中国软件的良好支持。比较是国人开发的。

其次是Mint,Ubuntu的衍生版,有强大的社区支持,查资料丰富,它又有自己的优化,比较不错。

Manjaro其实是后起之秀,国外人用的比较多。这个款开发效率相对较高。基本和Mint类似。我在使用了半年后,一次更新彻底起不来了。执行了修复。U盘挂载系统更新都不可以。放弃了。可能还是不稳定吧。

总结:对于想使用Linux开发的朋友来说。新手建议Deeplin、少折腾。一定经验的来说。建议使用Mint,比较方便,兼容性好。可以不用少折腾,想尝鲜的朋友可以试试Manjaro,真心不错,一个脚本,开发工具软件环境统统搞定,高手应该会使用Arch Linux,最无敌的系统。

有问题请在下方浏览或者加入星球

2011-05-24 10:11:00 weixin_30788731 阅读数 4
  • 自己动手从0到1写嵌入式操作系统

    这不是rtos源码分析的课程,而是为初级的同学设计,从基础原理讲师,一步步不断迭代设计rtos的课程! 用不到【2000行代码,汇编代码仅18行】(不含注释)实现一个精巧的可以运行在ARM Cortex-M内核芯片上的RTOS! 该RTOS功能与ucos类似,具体实现不同。学习之后,再去学习ucos之类的系统将没有什么问题。

    9125 人正在学习 去看看 李述铜

教你如何查看自己操作系统是32位还是64位?XP系统

 

我的电脑属性,查看cpu型号,网络上即可查出该cpu是否支持64位系统,64位cpu向下支持32位系统。然后再查看现在的机器是什么系统。

 

1. 单击“开始”,然后单击“运行”。      2. 在“打开”框中,键入winmsd.exe,然后单击“确定”。      3. 在“项目”下面的右窗格中找到“处理器”。注意数值。  如果“处理器”对应的值是以“x86”开头的,则该计算机正在运行的是 Windows 操作系统的 32 位版本。     如果“处理器”对应的值是以“ia64”开头的,则该计算机正在运行的是 Windows 操作系统的 64 位版本。     或者:在“系统摘要”右窗格中找到“系统类型”如果显示“基于 X86 的 PC”,则该计算机正在运行的是 Windows 操作系统的32位版本;如果为“基于 Itanium?C的系统”,则该计算机正在运行的是 Windows 操作系统的64位版本


类别:xp系统 查看评论

转载于:https://www.cnblogs.com/dorothychai/archive/2011/05/24/2243374.html

2018-02-24 16:01:16 tz1317818031 阅读数 119
  • 自己动手从0到1写嵌入式操作系统

    这不是rtos源码分析的课程,而是为初级的同学设计,从基础原理讲师,一步步不断迭代设计rtos的课程! 用不到【2000行代码,汇编代码仅18行】(不含注释)实现一个精巧的可以运行在ARM Cortex-M内核芯片上的RTOS! 该RTOS功能与ucos类似,具体实现不同。学习之后,再去学习ucos之类的系统将没有什么问题。

    9125 人正在学习 去看看 李述铜

首先进入Oracle官网 下载我们所需要的JDK(请根据自己操作系统的位数进行选择x86 32位操作系统; x64 64位操作系统)

下载速度如果过慢,可以尝试使用迅雷下载(把下载链接复制进入迅雷下载)

下载完成之后我们把JDK压缩包上传至我们自己的服务器中

此处我使用的是 filezilla 上传工具

上传成功之后 使用 tar -zxvf  解压命令(例:tar -zxvf  jdk-8u161-linux-x64.tar.gz

解压成功之后(可以删除压缩包了),我们需要配置操作系统的环境变量

打开 /etc/profile 文件(可以用vim 命令 或者 直接使用 filezilla 编辑此文件

在文件的尾部添加环境变量 如图:

修改成功之后保存文件 :wq命令 或者 用 filezilla 更新文件

在此处并未完全完成,因为/etc/profile 文件需要重新加载一次

我们需要使用 source /etc/profile 命令来重新加载此文件

 

接下来 验证是否成功安装java运行环境 

执行java 

执行javac

如果返回命令信息则说明成功。

或执行 java -version ,javac -version 查看版本信息

至此我们已经成功在CentOS7.0配置好了java运行环境

博主博客:http://tanzhuo.xyz

 

2019-03-31 15:33:10 Sukla 阅读数 27
  • 自己动手从0到1写嵌入式操作系统

    这不是rtos源码分析的课程,而是为初级的同学设计,从基础原理讲师,一步步不断迭代设计rtos的课程! 用不到【2000行代码,汇编代码仅18行】(不含注释)实现一个精巧的可以运行在ARM Cortex-M内核芯片上的RTOS! 该RTOS功能与ucos类似,具体实现不同。学习之后,再去学习ucos之类的系统将没有什么问题。

    9125 人正在学习 去看看 李述铜

. 操作系统启动的时候先到BIOS看看以什么方式启动

. 找到BIOS设置的启动方式后,去看对应的操作系统的内核的位置

. 找到内核之后,内核会去识别电脑上的硬件,然后选择自己操作系统中的驱动程序来驱动相应的硬件,比如声卡,显卡,然后把电脑交给主进程,同时有一些函数库也会加载到缓存中

. 主线程会将设置开机启动的程序依次启动,然后会执行一些设置好的任务,比如开机5分钟扫描一下病毒

. 然后用户就可以来使用操作系统来执行任务了

2018-05-07 10:55:32 qq_26286193 阅读数 856
  • 自己动手从0到1写嵌入式操作系统

    这不是rtos源码分析的课程,而是为初级的同学设计,从基础原理讲师,一步步不断迭代设计rtos的课程! 用不到【2000行代码,汇编代码仅18行】(不含注释)实现一个精巧的可以运行在ARM Cortex-M内核芯片上的RTOS! 该RTOS功能与ucos类似,具体实现不同。学习之后,再去学习ucos之类的系统将没有什么问题。

    9125 人正在学习 去看看 李述铜

最近深感自己操作系统的基础不够扎实(学过的内容全还给老师了),所以就回笼重新学了一遍,这个系列也就是我在学习过程中做的一些笔记。我主要是根据清华大学的操作系统视频课程来学习的。这里要感慨一下,B站真是个神奇的地方,居然有人把这门课的视频都整理好了:

https://www.bilibili.com/video/av6538245(以概念、原理讲解为主)

https://www.bilibili.com/video/av10496140(有比较详细的实验讲解)

上面两个视频,其实就是一门课,只是不同的老师在讲。

实验环境:https://www.shiyanlou.com/courses/221

我看这门课程的视频是为了补充自己在基础知识上的不足,所以并没有做实验。

另外,在写笔记的过程中,也搬运了一些其他博客的内容,有些地方没有标注来源,如果原创作者觉得有任何问题都可以联系我,侵删。


第一章 课程概述

1、什么是操作系统

从用户、控制的角度,操作系统是个控制软件,管理应用程序、为应用程序提供服务、杀死应用程序。从资源分配的角度来说,操作系统进行资源管理、管理各种外设、对资源进行分配。操作系统将物力资源进行抽象:CPU抽象成进程、磁盘抽象成文件、内存抽象成地址空间提供给应用程序使用。

2、操作系统层次结构

硬件之上、应用程序之下。是个中间层的系统软件。

操作系统位于应用软件之下、为应用软件提供服务支撑,完成对硬件的管理。

操作系统有两层对外的接口:对外暴露的接口外壳(Shell),和面向内部的内核(Kernel)。

3、操作系统的内核

Kernel-操作系统内部组件,包括:CPU调度、物理内存管理、虚拟内存管理(给上层应用提供相对独立而且尽可能大的内存)、文件系统管理(存储和访问永久保存的数据)、中断处理与设备驱动(和底层设备直接打交道)等。

4、操作系统(OS Kernel)的特征

(1)并发。计算机系统中同时存在多个运行的程序,需要OS管理和调度。注意区分并发和并行。并发指的是在一段时间内有多个程序可以运行。并行指的是在一个时间点上有多个程序可以同时执行。“一段时间”和“一个时间点”的区别。要实现并行,一般要求有多个CPU。单核CPU无法实现并行。

(2)共享。多个应用程序在宏观上可以“同时”访问内存、I/O等资源,但在内部可能是互斥的(同一个时间点,某些资源只能由一个程序使用)。

(3)虚拟。利用多道程序设计技术,把一台物理机器虚拟成多台虚拟机器。让每个用户都觉得有一个计算机专门为他服务。

(4)异步。程序的执行不是一贯到底,而是走走停停的,向前推进的速度不可预知,取决于系统的管理。但只要运行环境相同,OS需要保证程序运行的结果也要相同。

5、操作系统的结构的发展演变

(1)简单操作系统:MS-DOS(1981-1994)不分块的单体内核

(2)微内核的设计,尽可能把内核的功能移到用户空间。应用的服务通过消息传递机制的松耦合方式进行交互。产业界用得比较少。

(3)VMM,虚拟机监控器。从操作系统-硬件变为操作系统-VMM-硬件。多操作系统共享硬件资源。

6、总结

课程概述、什么是操作系统、为什么学习操作系统、操作系统实例、操作系统的演变、操作系统的结构。

第二章 启动、中断、异常、系统调用

一、启动

操作系统一开始是放在DISK(硬盘)中,并不是放在内存中。

BIOS:基本I/O处理系统。内存中有一部分空间(固定的)是用来存放BIOS的。

以X86为例:

1.      X86 PC开机时,CPU处于实模式,这时候内存的计算方式是 段基址 <<4 + 段内偏移;

2.      CPU的第一条指令是通过CS:IP来取得,而此时CS=0xFFFF,IP=0x0000。这是硬件设定好的。

3.      所以最开始执行的指令地址就是0xFFFF0,放在这里的是个跳转指令,调到系统BIOS中真正的启动代码处:主板的BIOS ROM(只读存储区)中。

4.      系统BIOS的启动代码首先进行加电自检(POST,Power-On Self Test),检测系统中的一些关键设备是否存在和能否正常工作,例如内存和显卡等。

5.      寻找显卡的BIOS。

6.      将BootLoader加载到内存中。BootLoader一般放在硬盘的第一个主引导扇区,也就是磁盘0磁道0扇区(一般512个字节)。比如在X86中,BIOS将BootLoader加载在0x7cdd。

7.      之后BootLoader将操作系统的代码和数据从硬盘加载到内存中。

完成上述操作后,跳转到操作系统的起始地址,将计算机系统的硬件管理交给OS。

                                                                                       

二、操作系统与设备的程序交互

为什么应用程序不能直接访问外设,而必须通过操作系统?

(1)在计算机运行中,内核是被信任的第三方,而应用程序不是,如果直接访问外设,可能带来安全问题。

(2)只有内核可以执行特权指令。

(3)为了方便应用程序,给应用程序提供简洁的接口。

1、系统调用

定义:应用程序主动向操作系统发出服务请求,来源于应用程序。异步或同步。应用程序知道它什么时候会发出系统调用请求,所以发出请求是同步的,但应用程序不知道操作系统什么时候会返回一个结果,因此是异步的。应用程序需要等待系统调用的响应,之后才能继续执行。

2、异常

定义:非法指令或者其他坏的处理状态(来源于不良的应用程序的操作引发的事件),如内存出错等。是个同步事件,指的是应用程序可以知道这件事情什么时候会发生,比如除以0,一定会产生个异常。响应状态:杀死或重新执行意想不到的应用程序指令。

3、中断

定义:来自不同的硬件设备的计时器和网络的中断(来源于外设,键盘、鼠标、网卡等,产生各种事件)。是个异步事件,应用程序不知道什么时候会发生这件事。响应状态:中断对应用程序是透明的。

 三、中断、异常、系统调用处理机制

1、中断

每种中断有个特定的编号(比如不同的外设会有不同的编号),收到中断后,CPU去访问中断表,在表中查到对应的中断服务程序的地址,从相应的地址去执行。

具体是通过硬件和软件两部分来执行的

硬件:

(1)设置中断标记[CPU初始化]。外设产生一个标记,发给CPU。CPU根据这个标记产生一个中断号,将中断号发给操作系统。

软件:

(1)操作系统保存当前处理状态(当前执行的指令的地址和当前一些寄存器的内容)。

(2)操作系统根据CPU给的中断号,访问中断服务程序,对中断进行处理。

(3)处理完后,清除中断标记。

(4)恢复之前保存的处理状态。

因此,上面的过程对应用程序是透明的。

2、异常

应用程序执行特定的指令会触发异常,CPU得到异常ID号。首先保存现场,然后根据异常ID号进行处理。可能会杀死应用程序,也有可能进行弥补后,恢复现场,重新执行。

3、系统调用

应用程序通过接口来对操作系统的服务进行请求。比如在标准C库中,应用程序调用printf(),会触发系统调用write()。操作系统完成请求后,会返回成功或失败,让应用程序继续执行后续工作。应用程序访问主要是通过高层次的API接口,而不是直接进行系统调用。比如Win32 API用于Windows,POSIX API用于POSIX-based systems,包括Linux、Unix、Mac OS X的所有版本。Java API用于Java虚拟机等。

系统调用的实现:应用程序直接或间接通过一个library(库)访问系统调用接口,一旦访问之后,会触发操作系统从用户态到内核态的转换,控制权从应用程序交到操作系统手中。操作系统对系统调用进行识别,并进行需要的服务。

用户态:CPU执行的特权级比较低,不能直接访问一些特殊的机器指令和I/O。

内核态:CPU可以执行任何指令,包括特殊的机器指令和I/O。此时操作系统可以完全控制整个计算机系统。

系统调用和函数调用的区别:

(1)应用程序发出函数调用时,在一个栈空间里进行函数间参数传递和参数的返回。

(2)发出系统调用时,应用程序和操作系统拥有各自的堆栈。当应用程序发出系统调用时,需要切换堆栈,并触发操作系统从用户态到内核态的转换。因此系统调用的开销比函数调用大很多。系统调用的好处就是安全、可靠。

 

四、跨越操作系统边界的开销

上述的中断、异常、系统调用,跨越了操作系统的边界。有一定的代价,这代价是为了确保系统能安全可靠的运行。在执行时间上的开销超过程序调用(前面提到了)。

开销:

(1)建立中断、异常、系统调用号与对应服务例程映射关系的初始化开销。这个表要在操作系统正常工作之前就建好。

(2)维护操作系统自己的内核堆栈。这个内核堆栈在操作系统开始工作之前就要建立好,操作系统退出的时候保存,执行的时候恢复。应用程序堆栈的保存和恢复,因此也要进行维护。

(3)验证参数。操作系统不信任应用程序,需要对系统调用参数进行检查(安全上的时间开销)。

(4)内核态映射到用户态的地址空间。

(5)内核态独立地址空间TLB。

这些开销都是值得的,必须的,为了保证操作系统在安全可靠的环境中执行。


大话操作系统

阅读数 1440

操作系统实践

博文 来自: oQiuHen
没有更多推荐了,返回首页