day2 操作系统

一.为何要有操作系统

  程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。

 

二.操作系统的位置

  操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,所以,单纯的说操作系统是运行于内核态的,是不准确的。

 

三.操作系统的功能

  操作系统应该分成两部分功能:

  ①:隐藏了丑陋的硬件调用接口,为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操作硬件的细节,专心开发自己的应用程序即可。

  比如,磁盘资源的抽象是文件系统(C盘,D盘,E盘...下的目录及文件),有了文件的概念,我们直接打开文件,读或者写就可以了,无需关心记录是否应该使用修正的调频记录方式,以及当前电机的状 态等细节

   需要指出的是,操作系统的实际客户是应用程序(应用程序员负责开发应用程序,因而也可以说应用程序员是操作系统的客户)。应用程序直接与操作系统及其抽象打交道。而最终,用户则是与应用程序(即用户接口)打交道,或者是命令行shell或者是图形界面(比如桌面),它们都只是运行于操作系统之上的应用软件,并不属于操作系统。

 

  ②:将应用程序对硬件资源的竞态请求变得有序化,例如:很多应用软件其实是共享一套计算机硬件,比方说有可能有三个应用程序同时需要申请打印机来输出内容,那么a程序竞争到了打印机资源就打印,然后可能是b竞争到打印机资源,也可能是c,这就导致了无序,打印机可能打印一段a的内容然后又去打印c...,操作系统的一个功能就是将这种无序变得有序(多路复用)

 

四。操作系统的发展

   第一代计算机(1940~1955):真空管和穿孔卡片

  第二代计算机(1955~1965):晶体管和批处理系统

  第三代计算机(1965~1980):集成电路芯片和多道程序设计

  第四代计算机(1980~至今):个人计算机

五.多道技术

多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。

空间上的复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。

   

时间上的复用:当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%,类似于我们小学数学所学的统筹方法

空间上的复用最大的问题是:程序直接的内存必须分割,这种分割在硬件层面实现,由操作系统控制实现。如果内存彼此不分割,则一个程序可以访问另外一个程序的内存,

首先丧失的是安全性,比如你的qq程序可以访问操作系统的内存,这意味着你的qq可以拿到操作系统的所有权限。

其次丧失的是稳定性,某个程序崩溃时有可能把别人的内存也给回收了,比方说把操作系统的内存给回收了,则操作系统崩溃。

 

转载于:https://www.cnblogs.com/hsddon/p/6878433.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django之model模型

模型 1.如何安装pymysql 1.file->settings->Project Interpreter 2.点击右边的"" 3.搜索pymysql 4.点击最下面的"install package" 5.安装成功会提示"Package "pymysql" install successfully"2.如何在django中配置mysql 1.在…

python安装不了jupyter_python学习笔记——Windowns下Python3之安装jupyter

Windowns下Python3之安装jupyter Jupyter notebook: 一个交互式笔记本,支持运行40多种编程语言。 利用它来写Python,代码和运行结果都可以保存下载,十分方便。本文主要以自身的安装过程为例,结合遇到的问题&#xff0c…

Java文件读写操作

http://blog.csdn.net/jiangxinyu/article/details/7885518/ 比较齐全,有多种文件读写操作转载于:https://www.cnblogs.com/maowuyu-xb/p/7238170.html

视频编码与封装方式详解

1. 编码方式和封装格式... 1 2. 视频编码标准两大系统... 2 MPEG-1. 2 MPEG-2. 3 MPEG-3. 3 MPEG-4. 3 ITU-T. 4 WMV. 4 3. 常用视频编码方式有Xvid( 4 4. 常见存储封装格式... 6 5. 几种常见的转换格式设置... 7 6. 无损视频编码... 9 1. 编码方式和封装格式常见…

Binder

问:为什么Android要采用Binder作为IPC机制 答案来自百度知道: (1)从性能的角度数据拷贝次数:Binder数据拷贝只需要一次,而管道、消息队列、Socket都需要2次,但共享内存方式一次内存拷贝都不需要…

matlab 三维核密度图_Matlab精彩画图示例:三维网状图和三维曲面图

接上篇:Matlab精彩画图示例:绘制图上图这篇介绍两个绘制三维图的命令:mesh - 绘制三维网状图surf - 绘制三维曲面图matlab代码如下:绘制三维图的matlab代码示例程序运行结果如下:mesh(X,Y,Z) draws a wireframe mesh w…

Django之templates模板

模板的使用 1.如何使用模板 在manage.py的同级文件夹中创建templates在setting.py的文件中把第58行DIRS: [ ],改成DIRS: [os.path.join(BASE_DIR,templates)], 知识点: os.path.join(BASE_DIR,templates) 拼接两个字符串 BASE_DIR找到项目根目录127.0.0.1:8000/myadmin/templ…

STL容器删除元素的陷阱

今天看Scott Meyers大师的stl的用法&#xff0c;看到了我前段时间犯的一个错误&#xff0c;发现我写的代码和他提到错误代码几乎一模一样&#xff0c;有关stl容器删除元素的问题&#xff0c;错误的代码如下&#xff1a;std::vector<struct> mFriendList;...std::vector&l…

JDBC1

1.jdbc的概述 是sun公司统一提供的一套接口规范,各个数据库生产商提供实现 注册驱动,获得连接,获得执行的SQL语句对象,释放资源 package com.learn.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;import org.junit.Test;publ…

无符号哥伦布指数编码

在H264编解码中&#xff0c;哥伦布指数编码是经常用到的&#xff0c;下面是无符号哥伦布指数编码的C代码&#xff1a; static inline int bs_read_ue( bs_t *s ){ int i 0; while( bs_read1( s ) 0 && s->p < s->p_end && i < 32 ) { …

django后台多页面分页逻辑python代码

#!/usr/bin/env python # -*- coding:utf-8 -*- # Created by 秋叶夏风# 本模块的功能:<>def get_page_list(max_page,curr_page,leng):用于生成页数列表:param max_page:最大页数:param curr_page:当前页数:param leng:分页步长:return:list# max_page 20# curr_page …

python程序怎么保存到u盘_python实现usb自动拷贝程序的方法

python实现usb自动拷贝程序的方法 发布时间&#xff1a;2020-06-28 09:07:05 来源&#xff1a;亿速云 阅读&#xff1a;135 作者&#xff1a;清晨 这篇文章将为大家详细讲解有关python实现usb自动拷贝程序的方法&#xff0c;小编觉得挺实用的&#xff0c;因此分享给大家做个参考…

young people can also be a leader

2019独角兽企业重金招聘Python工程师标准>>> The leaders or directors of organizations are often older people. But some people say that young people can also be a leader. To what extent do you agree or disagree? In my view , young people can also …

BZOJ 2004 公交线路(状压DP+矩阵快速幂)

注意到每个路线相邻车站的距离不超过K&#xff0c;也就是说我们可以对连续K个车站的状态进行状压。 然后状压DP一下&#xff0c;用矩阵快速幂加速运算即可。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm>#define…

python爬取网易云歌单_详解python selenium 爬取网易云音乐歌单名

目标网站&#xff1a;首先获取第一页的数据&#xff0c;这里关键要切换到iframe里打印一下获取剩下的页数&#xff0c;这里在点击下一页之前需要设置一个延迟&#xff0c;不然会报错。结果&#xff1a;一共37页&#xff0c;爬取完毕后关闭浏览器 完整代码&#xff1a; url htt…

Idea的一些调试技巧及设置todo

程序员的工作内容&#xff0c;除了大部分时间写代码之外&#xff0c;因为有不少的时间是用在调试代码上。甚至说不是在调试代码&#xff0c;就是即将调试代码。 :) 今天我们来谈谈调试代码的一些技巧&#xff0c;在使用IDE提供的debugger时一些快速定位问题的方式。 看到这里的…

安装Node.js和npm

安装Node.js和npm 学习了&#xff1a;http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143450141843488beddae2a1044cab5acb5125baf0882000 转载于:https://www.cnblogs.com/stono/p/6891242.html

c++ cstring 转换 char_cstring.h库常用函数

上周&#xff0c;老师讲了大整数的运算方法&#xff0c;我对大数的存储和运算还有些不理解&#xff0c;仔细思考了一下&#xff0c;其实还是训练孩子对机器存储数据的各种掌握和运用吧。不多想&#xff0c;先期孩子虽然一直学习&#xff0c;但是缺乏对知识的系统整理&#xff0…

Django后台管理之商品分类

商品分类 1.建表字段 1.pid&#xff1a;用来绑定父类的 2.path&#xff1a;用来拼接id&#xff0c;保证查询出的数据是按照层级关系展示的2.concat 把表中的两个字段拼接成一个新的字段&#xff0c;通过as重新命名3.查询语句 1.按照第二步拼接成新的字段的名字进行排序查询…

PMT_Stream数据结构

0123 012345670123456701234567012345671stream_type reserved_1elementary_PIDreserved_2ES_info_length 2ES_info_length …(描述信息)3…(描述信息)4crc32 1 节目号 stream_type 8指示了PID为elementary_PID的PES分组中原始流的类型&#xf…