- 浏览: 622921 次
文章分类
最新评论
-
q781253433:
qin ~.求demo看看~
Android之Widget -
zhongyuanceshi:
博主,没看到你的例子的Demo,共享下
Android之Widget
我们用一组简单的数学公式来描述操作系统的组成要素:
操作系统 = 内核 + 系统程序
系统程序 = 编译环境 + API + AUI
编译环境 = 编译程序+连接程序 + 装载程序
API = 系统调用 + 语言库函数( C,C++,Java,etc )
AUI = shell + 系统服务例程(如 x 服务器等) + 应用程序 ( 浏览器,字处理,编辑器 )
操作系统最底层的组件是内核,其上层搭建了许多系统软件。系统程序包括三个部分。这三个部分分别是:编译环境、应用程序接口和用户接口。编译环境包含汇编, C 等低高级语言编译程序,连接程序和装载程序,这些程序负责将文本格式的程序语言转变为机器能识别和装载的机器代码;应用程序接口( API )包含内核提供的系统调用接口和语言库,系统调用是为了能让应用程序使用内核服务,语言库函数则是为了方便应用程序开发,所以将一些常用的基础功能预先编译以供使用,比如对 C 语言来说常用的 C 库有 gun C 等;用户接口 (AUI) 包括我们熟悉的 shell( 关于 shell 应该专门写一个教程 ) 、系统服务程序和常用的应用程序。
这些部分并非所有的操作系统都必须一个不少的包含,不过其中大多数功能都应该提供,尤其内核,系统调用, shell 这些基本组件,它们都属于操作系统必备组件,其它组件是否包含需要根据具体系统的要求和应用环境决定,你也可以将其归为操作系统之外的附加部分。
内核概念
操作系统最核心,最基础的组件就要属内核了——内核和操作系统的其它系统软件或应用程序本质的区别在于内核运行在高特权级,和硬件直接交互,操作权限几乎不收任何限制,因此内核程序编写也要求格外谨慎,必须保证效率和可靠。
内核设计的主要任务
内核作为操作系统的核心,运行级别最高。其它系统程序都必须通过它才可以使用系统资源,获取系统服务。所以内核使用最为频繁,一切系统行为无论巨细都要通过内核参与。
因此内核运行效率和正确性对整个系统的运行效率和可靠性至观重要,如果内核效率稍微下降,那么在应用程序中就必然造成层层放大。
内核要求高效率,所以它必须自系统运行起就要载入内存,并且在运行期间一直驻留在内存中,直到系统关闭。这是内核与其它应用程序或系统程序的另一个显著区别。虽然说内存今天已经不再是天价了,但是毕竟内存容量有限,所以内核大小不能过大( Linux 内核只有几 M 或十几 M ,甚至可以裁减得更小),因此内核只应该包含最基础和核心的功能,其它附加功能应该尽量提到用户空间完成。
那么到底有那些功能是操作系统使用最频繁,最需要在内核中实现的呢?内核直接架构于硬件资源之上,因此首先要做的就是对硬件的资源管理。因此内核必须负责:内存管理,进程和进程调度(对 CPU 的管理),文件系统管理, I/O 处理等任务。
我们的杂志核心就是在解释内核原理的基础上,带领大家学习内核级别的开发,也就是说进行核心开发。本期仅仅给大家一个概念上的说明,描述内核设计需要完成的主要任务,至于具体内核各部分的详细讨论在后续期刊中将逐步展开。
内核至少需要包含如下几个模块。
进程管理 : 进程是操作系统中的执行代码,是任务在系统内的动态化身。内核必须负责将任务抽象为进程,而且必须能将进程执行,能为进程分配资源,维护进程的执行状态, 提供进程间通讯方法。更进一步讲,进程管理还必须保证进程运行的可靠性,因此需要提供进程同步,互斥,防死锁等等服务,另外进程调度也是进程管理中的重要 任务。
内存管理 :计算机存储部件由快到慢、由小到大分为缓存、内存和磁盘。其中最主要和必须是内存,内存管理包括内存的分配和释放,以及访问保护等。另外对使用虚拟内存的系统,内存管理还包含虚拟内存管理,磁盘交换管理,内存影射等等。
文件系统 :文件是多数系统中用户使用和管理数据的主要方式,文件系统需要负责用户文件访问,访问权限控制,文件格式转换,数据传输等一系列问题。
设备管理 :除了存储设备外,系统还有大量外设需要操作系统管理,比如时钟,网卡,键盘,磁盘等等,设备管理需要负责驱动这些设备为上层调用服务。
I/O 管理 : 操作系统中 I/O 管理负责处理复杂的 I/O 操作,其中包括 I/O 缓冲和磁盘调度等。
另外中断管理 也是操作系统内核应该实现的功能。
以上是操作系统内核设计要考虑的主要问题,其中各种模块彼此相互交错、相互利用。不过这些模块的划分并不是绝对的,在实际系统中可能有不同的组合或更细致地划分,因此我们不必追究模块的具体内容,需要关注的是内核究竟需要完成那些功能。
内核模块大致也有层次之分,我们可以这样理解层次含义:直接和硬件作用的是硬件抽象层 ,和用户更靠近的属于逻辑抽象层 。
所谓硬件抽象层,是指管理硬件设备的模块,比如存储管理、设备管理这些模块将硬件功能抽象为内核数据结构和接口函数,以供上层使用。比如磁盘设备驱动,需要将磁盘设备功能抽象为打开 open ,写入 (write) ,读取( read )等接口函数;内存管理需要将内存抽象为页、段等结构体。然后分配、合并、释放等工作都是通过操作这些抽象得来的结构体,再由这些结构影射到内存的物理实体上去的完成实际操作的。
所谓逻辑抽象层最主要的目的是为了贴近用户需求,最重要的逻辑抽象模块就是文件系统,文件系统的存在完全是从用户角度出发设计的,因为用户最能接受以用文件形式包装的信息,所以文件系统属于逻辑上的抽象,因为物理设备中没有对应文件的实体。
对于进程管理来说,其中进程执行和调度要和处理器打交道,应该说属于硬件抽象层,但其中进程状态维护,进程通讯等更接近用户使用,因此可以归结到逻辑抽象层。
另外 I/O 管理和中断管理些模块,在内核中属于为其它模块服务的借用力量,它们主要被文件系统或设备管理模块使用,但总之是面向硬件的,所以也可以将其归为硬件逻辑层。
发表评论
-
Android之Fastboot、Recovery基础知识
2013-12-19 22:13 1065参考文章: http://blog.csdn.net/y9 ... -
Eclipse设置主题
2013-10-26 22:32 689下载自己喜欢的主题: http://eclipsec ... -
gitignore文件的配置
2013-09-24 15:29 1720gitignore文件在Android ... -
Eclipse安装Git插件
2013-09-24 14:20 778http://jiangli.easymorse.com/?p ... -
Eclipse像Xcode一样自动有提示
2013-09-05 17:04 12141. 打开Eclipse,然后打开“Preferences ... -
点九PNG技术
2013-04-16 13:26 878参考文章: http://blog.csdn.net/g ... -
Android ASE 脚本环境
2013-04-10 12:32 1180原文: http://blog.sina.com.cn/ ... -
ssh基础知识 mercurial,git,用户
2013-02-22 23:45 1437ssh连接 ssh是目前较可靠,专为远程登录会话和其他网 ... -
Linux基础知识——系统目录结构
2013-02-19 21:34 1095linux下的文件结构,看看每个文件夹都是干吗用的/bin ... -
android 按两次返回键退出
2012-12-25 20:01 1310package com.anjoyo.test; ... -
android混淆代码总结
2012-12-19 18:02 1513反编译工具下载地址:http://ishare.iask.si ... -
System.out.printf输出格式
2012-12-13 22:01 2515// 定义一些变量,用来格式化输出。 double ... -
Regex正则表达式的使用
2012-12-09 20:20 1812正则表达式是用来描述某些字符串规则的工具,可以用此规则来做 ... -
IOS&Android开发 使用特殊字体,使用自定义字体
2012-11-24 00:16 1563IOS开发: 原文链接:http://tieba.baidu ... -
AspectJ的安装和Eclipse的AJDT插件的配置
2012-11-19 15:21 4931安装AspectJ是为了正常使用软件MonkeyTalk 1 ... -
Mac配置android开发环境
2012-11-13 16:18 48一.Eclipse的下载 到网站:http ... -
RelativeLayout相关属性
2012-11-13 14:49 955android:layout_centerInP ... -
Android资源文件
2012-11-04 15:22 981res [res中共有10种文 ... -
activity的启动方式(launch mode)
2012-11-04 15:14 858其他很详细的参考:http://blog.csdn.net/b ... -
android分享功能的实现(分享到微博空间等)
2012-11-03 22:15 2201//Intent intent = new Inten ...
相关推荐
tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl
tornado-6.1-cp36-cp36m-manylinux2014_aarch64.whl
基于java的ssm停车位短租系统程序答辩PPT.pptx
tornado-6.4b1-cp38-abi3-musllinux_1_1_x86_64.whl
基于java的招生管理系统答辩PPT.pptx
本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac
基于java的农机电招平台答辩PPT.pptx
jdk23 甲骨文官方安装包
基于java的机场网上订票系统答辩PPT.pptx
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
基于java的网上书店销售管理系统答辩PPT.pptx
tornado-6.3.3-cp38-abi3-win32.whl
【作品名称】:基于 Jsp+Sqlserver 实现的超市信息管理系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 系统功能: (1)系统分两种身份:管理员和员工,选择不同的身份进入不同的功能操作界面! (2)商品信息管理:管理员可以添加和维护商品信息,员工只能对商品信息进行查询 (3)员工信息管理:管理员登陆系统后可以可以添加和维护超市员工(收银员)的信息 (4)商品进货管理:管理员登陆系统后可以添加商品进货信息,可以对商品进货信息进行查询和统计,添加商品进进货退货信息,对商品进货退货信息进行查询和统计 (5)商品销售管理:员工(收银员)登陆系统后可以对商品进行销售,可以按时间查询自己的销售业绩;管理员登陆系统后可以按照时间等条件对销售信息进行查询,可以根据小票号登记顾客退货信息,查询顾客退货信息,可以查看员 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。
tornado-6.3.2-cp38-abi3-musllinux_1_1_i686.whl
基于java的热带水果商城答辩PPT.pptx
java awt、Swing实现中国象棋可联机版本采用面向对象思想 采用面向对象的思路,实现中国象棋可联机版本,适合初学者,以及对面向对象有更深层次理解的开发者或者同学。 使用原生的java awt、Swing进行窗口式开发 将素材文件夹放在D:\Game路径下 两个工程直接导入Eclipse,即可运行, ps:一个工程运行两次也可以,需要注意端口号,代码默认如果连接的端口号是3003,则监听3004端口,相反同理。联机前需要确保两台计算机同时处于局域网或外网
web前端设计与开发(详细整理)(包含html讲解,css讲解,移动web讲解),合适学习前端的人员进行基础学习,一秒变高手
分析所需的数据和代码都在这里
Listening Exercise 3 Part 2.mp3
链表 删除链表中的重复元素,链表基础