当前位置: 首页 > 编程日记 > 正文

操作系统2--操作系统结构

操作系统结构

操作系统的结构需要从这几个方面来考虑:他为用户提供了哪些服务和界面,系统各个组成部分及其相互关系


操作系统的操作

大致可分为:进程管理,主存管理,文件管理,辅存管理和IO管理

进程管理

  1. 进程的创建和结束
  2. 进程的挂起和恢复
  3. 进程锁\进程交互\进程死锁的规则

内存管理

  1. 记录内存使用
  2. 分配和回收内存资源

文件管理

  1. 文件的创建和删除
  2. 文件目录的创建和删除
  3. 文件二进制操作
  4. 映射文件到二级存储
  5. 在非易失性存储上备份

辅存管理

  1. 空闲存储空间管理
  2. 存储分配
  3. 磁盘调度

IO管理
管理IO设备


操作系统的服务

对于用户

  1. 程序的执行:最关键的服务,从辅存中加载程序到内存中并执行
  2. IO操作,用户不能直接惊醒IO操作,这也需要系统来提供服务
  3. 文件操作,用户需要读写,创建和删除文件
  4. 信息交流:在两个进程间传送消息:方法一般分为发送报文和共享内存
  5. 错误检测

对于确保系统正常运行

  1. 资源分配:多个程序同时运行下资源分配显得更为重要
  2. 记录任务
  3. 保护:所有资源被正确回收,所有连接使用后被断开

操作系统界面 接口

用户界面

  1. GUI 用户图形界面
  2. cmd命令行
  3. batch 批处理命令

程序接口

  1. 系统调用

    与一个固定ID关联,参数传递时可以传寄存器里的数,也可应从堆栈中,内存中传递

  2. API

    API建立在系统调用之上,只要知道AIP函数入口很容易使用,但需要运行库来支持.最常用的AIP有
    win32API (WINDOWS) POSIX(UNIX,LINUX) JAVA API (JVM)

    附注:系统调用的种类
    进程管理类 文件管理 设备管理 信息维护 信息传递


操作系统结构

  1. 简单结构
  2. 分层结构

    系统分为很多层,高层只能调用低一层的功能

  3. 微内核结构

    如名,提供精简的内核,提供最小化的进程管理,内存管理,和通讯设备(通讯使用消息传递的方式)

  4. 模块结构

    最常用的结构,类似分层结构,但和分层结构相比,模块结构更加松散,每个模块不分高低,相互依赖使用

举例说明:
如 MS-DOS 虽然有一定的分层,但模块之间的区分很不清楚,而UNIX就分为了内核部分和系统程序两个模块

转载于:https://www.cnblogs.com/goldenhair/p/3676190.html

相关文章:

Windows环境下启动Mysql服务提示“1067 进程意外终止”的解决方案

2019独角兽企业重金招聘Python工程师标准>>> 在Windows服务里启动Mysql服务时提示“1067 进程意外终止”。 此时我们打开计算机管理查看Windows日志,如下图所示: 完整错误提示如下: The server option lower_case_table_names is …

不使用任何框架实现CNN网络

文章目录一、 问题描述二、 设计简要描述三、程序清单四、结果分析五、调试报告六、实验小结一、 问题描述 基于Numpy和函数im2col与col2im来实现一个简单的卷积神经网络,将其用于手写体识别。 二、 设计简要描述 机器学习的三个基本步骤—— 程序设计思路——(…

关于刘冬大侠Spring.NET系列学习笔记3的一点勘正

诚如他第22楼“只因渴求等待”提出的疑问一样,他的下面那一段代码是存在一点点问题的, XElement root XElement.Load(fileName);var objects from obj in root.Elements("object") select obj; 如果照搬照抄刘冬大侠的这段代码那是不会成功读…

什么叫做KDJ指标

什么叫做KDJ指标 KDJ指标的中文名称是随机指数,最早起源于期货市场。 KDJ指标的应用法则KDJ指标是三条曲线,在应用时主要从五个方面进行考虑:KD的取值的绝对数字;KD曲线的形态;KD指标的交叉;KD指标的背离&a…

vim常用命令总结 (转)

在命令状态下对当前行用 (连按两次), 或对多行用n(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n排版,相当于一般IDE里的code format。使用ggG可对整篇代码进行排版。 vim 选择文本&…

敏捷过程、极限编程和SCRUM的关系

极限编程是最知名的敏捷开发过程,SCRUM是最经典的极限编程。 层次关系从大到小是:敏捷过程>极限编程>SCRUM

C#双面打印解决方法(打印word\excel\图片)

最近需要按顺序打印word、excel、图片,其中有的需要单面打印,有的双面。网上查了很多方法。主要集中在几个方式解决 1、word的print和excel的printout里设置单双面 2、printdocument里的printsettings的duplex设置单双面 试过之后效果都不好,…

【leetcode】589. N-ary Tree Preorder Traversal

题目如下: 解题思路:凑数题1,话说我这个也是凑数博? 代码如下: class Solution(object):def preorder(self, root):""":type root: Node:rtype: List[int]"""if root None:return []re…

MSDN Visual系列:创建Feature扩展SharePoint列表项或文档的操作菜单项

原文:http://msdn2.microsoft.com/en-us/library/bb418731.aspx在SharePoint中我们可以通过创建一个包含CustomAction元素定义的Feature来为列表项或文档添加一个自定义操作菜单项(Entry Control Block Item)。我们可以添加自定义命令到默认的SharePoint用户界面中。…

评审过程中,A小组发现了5个缺陷,B小组发现了9个缺陷,他们发现的缺陷中有3个是相同的。请问:还有多少个潜在的缺陷没有发现?

分析:这一个“捉-放-捉”问题 背景: 求解: 可以将A看成是第一次捕捉,发现了5个缺陷,全部打上标记 B看成是第二次捕捉,发现了9个缺陷,其中有3个有标记 那么可以算出系统中一共存在的缺陷数量为…

Dell PowerVault TL4000 磁带机卡带问题

最近一段时间Dell PowerVault TL4000 磁带机故障频繁,昨天我在管理系统里面看到Library Status告警:HE: sled blocked, error during sled movement to rotation position Code: 8D 07 ,Dell工程师根据Code: 8D 07判断是磁带卡带了&#xff0…

【git】git入门之把自己的项目上传到github

1. 首先当然是要有一个GIT账号:github首页 2. 然后在电脑上安装一个git:git首页 注册和安装这里我就不说了。我相信大家做这个都没有问题。 3. 上述两件事情做完了,就登陆到github页面 1)首先我们点标注【1】的小三角,…

Java面试查漏补缺

一、基础 1、&和&&的区别。 【概述】 &&只能用作逻辑与(and)运算符(具有短路功能);但是&可以作为逻辑与运算符(是“无条件与”,即没有短路的功能)&#xf…

selenium之frame操作

前言 很多时候定位元素时候总是提示元素定位不到的问题,明明元素就在那里,这个时候就要关注你所定位的元素是否在frame和iframe里面 frame标签包含frameset、frame、iframe三种,frameset和普通的标签一样,不会影响正常的定位&…

(C++)将整型数组所有成员初始化为0的三种简单方法

#include<cstdio> #include<cstring>int main(){//1.方法1 int a[10] {};//2.方法2 int b[10] {0};//3.方法3 注意&#xff1a;需要加 <cstring>头文件 int c[10];memset(c,0,sizeof(c));for(int i0;i<9;i){printf("a[%d]%d\n",i,a[i]);}prin…

(C++)对用户输入的整形数组进行冒泡排序

#include<cstdio>//冒泡排序的本质在于交换 //1.读入数组 //2.排序 //3.输出数组 int main(){int a[10];printf("%s","请依次输入数组的10个整型元素&#xff1a;\n");for(int i0;i<9;i){scanf("%d",&a[i]);} int temp 0;for(int …

U3D的Collider

被tx鄙视的体无完肤&#xff0c;回来默默的继续看书&#xff0c;今天看u3d&#xff0c;试了下collider,发现cube添加了rapidbody和boxcollider后落在terrain后就直接穿过去了... 找了一会原因&#xff0c;看到一个collider的参数说明&#xff1a; 分别选中立方体和树的模型&…

限制程序只打开一个实例(转载)

当我们在做一些管理平台类的程序&#xff08;比如Windows的任务管理器&#xff09;时&#xff0c;往往需要限制程序只能打开一个实例。解决这个问题的大致思路很简单&#xff0c;无非是在程序打开的时候判断一下是否有与自己相同的进程开着&#xff0c;如果有&#xff0c;则关闭…

dao.xml

<select id"selectItemkindByPolicyNo" resultMap"BaseResultMap" parameterType"java.util.List"> select * from prpcitemkind kind where kind.PolicyNo in <foreach collection"list" item"item&q…

(C++)字符数组初始化的两种方法

#include<cstdio> //字符数组的两种赋值方法 int main(){//1.方法一char str1[14] {I, ,l,o,v,e, ,m,y, ,m,o,m,.};for(int i 0;i<13;i){printf("%c",str1[i]);}printf("\n");//2.方法二&#xff0c;直接赋值字符串(注意&#xff0c;只有初始化…

SQL Server 中update的小计

update中涉及到多个表的&#xff1a; 1.update TableA set a.ColumnCb.ColumnC from TableA a inner join TableB b on a.ColumnDb.ColumnD 这样是不对的&#xff0c;报错如下&#xff1a; 消息 4104&#xff0c;无法绑定由多个部分组成的标识符 “xxxx” 虽然前面的TableA和后…

MFC中的字符串转换

在VC中有着一大把字符串类型。从传统的char*到std::string到CString&#xff0c;简直是多如牛毛。期间的转换相信也是绕晕了许多的人&#xff0c;我曾就是其中的一个。还好&#xff0c;MS还没有丧失功德心&#xff0c;msdn的一篇文章详细的解析了各种字符串的转换问题&#xff…

tf.nn.relu

tf.nn.relu(features, name None) 这个函数的作用是计算激活函数 relu&#xff0c;即 max(features, 0)。即将矩阵中每行的非最大值置0。 import tensorflow as tfa tf.constant([-1.0, 2.0]) with tf.Session() as sess:b tf.nn.relu(a)print sess.run(b) 以上程序输出的结…

(C++)字符数组的四种输入输出方式

scanf/printf%s getchar()/putchar() 前者不带参数后者带 gets()/puts() 二者都带参数&#xff0c;为一维字符数组或二维字符数组的一维 运用指针scanf/printf或getchar/putchar #include<cstdio> //字符数组的3种输入输出方式int main(){//1.scanf/printf%schar st…

css制作对话框

当你发现好多图都能用css画出来的时候&#xff0c;你就会觉得css很有魅力了。//我是这么觉得的&#xff0c;先不考虑什么兼容问题 像漫画里出现的对话框&#xff0c;往往都是一个对话框然后就加入一个箭头指向说话的那一方&#xff0c;来表示这个内容是谁述说的。 今天认真学了…

Git相关二三事(git reflog 和彩色branch)【转】

转自&#xff1a;https://www.jianshu.com/p/3622ed542c3b 背景 git太常用了&#xff0c;虽然&#xff0c;用起来不难&#xff0c;但也有很多小技巧的东西... 1. 后悔药 哪天不小心&#xff0c;写完代码&#xff0c;没commit,直接reset了或者checkout了&#xff0c;怎么办&…

MS SQL入门基础:备份和恢复系统数据库

系统数据库保存了有关SQL Server 的许多重要数据信息&#xff0c;这些数据的丢失将给系统带来极为严重的后果&#xff0c;所以我们也必须对系统数据库进行备份。这样一旦系统或数据库失败&#xff0c;则可以通过恢复来重建系统数据库。在SQL Server 中重要的系统数据库主要有ma…

(C++)输入输出字符矩阵(二维字符数组)的三种方法

想输出一个这样的字符矩阵 CSU ZJU PKUscanf和printf #include<cstdio> #include<cmath>int main(){char schools[3][3];printf("请输入&#xff1a;\n");for(int i0;i<2;i){scanf("%s",schools[i]);}printf("以下为输出&#xff1a…

C# async await 学习笔记2

C# async await 学习笔记1&#xff08;http://www.cnblogs.com/siso/p/3691059.html&#xff09; 提到了ThreadId是一样的&#xff0c;突然想到在WinForm中&#xff0c;非UI线程是无法直接更新UI线程上的控件的问题。 于是做了如下测试&#xff1a; using System; using System…

不走寻常路 设计ASP.NET应用程序的七大绝招

随着微软.NET的流行&#xff0c;ASP.NET越来越为广大开发人员所接受。作为ASP.NET的开发人员&#xff0c;我们不仅需要掌握其基本的原理&#xff0c;更要多多实践&#xff0c;从实践中获取真正的开发本领。在我们的实际开发中&#xff0c;往往基本的原理满足不了开发需求&#…