精华内容
下载资源
问答
  • NPOI实现.NET的Excel导入导出功能,可兼容各种版本的 Office 和 WPF 文件的打开,简单实用,里面有NPOI类库+Excel的操作帮助类+实例调用代码; 一看便知怎么使用了,简洁明了。
  • 计算机操作系统(第3版)汤子瀛.pdf 有目录结构
  • C#操作摄像头

    千次下载 热门讨论 2014-02-17 00:14:41
    C#操作摄像头,有图有真相,绝对好用!作者自己试验过的,有问题欢迎随时交流。
  • C++完整数据库SQLServer操作类(ODBC)

    千次下载 热门讨论 2014-10-20 11:39:36
    C++对SQLServer操作的可直接使用类,包括打开数据库,对数据库进行操作,获取数据等结合sql对数据库的全部操作,ODBC操作数据库
  • 常见的操作系统有哪些?

    万次阅读 2019-12-26 19:33:42
    一、常见的操作系统有哪些? 1、Windows操作系统 应用比较广泛。 2、Linux操作系统 免费使用,类UNIX 3、Unix操作系统 无界面,使用命令操作,一般安装在服务器上面。 4、Mac操作系统 苹果公司开发的,一般...

    一、常见的操作系统有哪些?

    1、Windows操作系统

    应用比较广泛。

    2、Linux操作系统

    免费使用,类UNIX

    3、Unix操作系统

    无界面,使用命令操作,一般安装在服务器上面。

    4、Mac操作系统

    苹果公司开发的,一般PC不能使用。

    摘自:https://blog.csdn.net/a15028596338/article/details/83021719

    二、我们现在常见的操作系统的体系结构有哪些呢?

    第二节 操作系统的体系结构

    目前流行的操作系统有Windows操作系统、UNIX操作系统、Linux操作系统和Android操作系统等。

    一、Windows操作系统的体系结构

    Windows体系结构是分层的模块系统,主要层次有硬件抽象层HAL、内核、执行体和大量的子系统集合

    子系统又分为环境子系统和保护子系统,其中环境子系统仿真不同的操作系统,保护子系统提供安全功能。

    1、内核

    内核执行Windows操作系统中最基本的操作,主要提供线程调度、陷入处理和异常调度、中断处理和调度、多处理器同步、供执行体使用的基本内核对象。

    Windows操作系统的内核始终运行在核心态,代码短小紧凑,可移植性也好。通常,除了中断程序例程,正在运行的线程是不能抢先内核的。

    2、硬件抽象层

    Windows操作系统设计的一个至关重要的方面就是在多种硬件平台上的可移植性。HAL就是使这种可移植性成为可能的关键部分。HAL是一个可加载的核心态模块HAL.dll,它为运行在Windows操作系统上的硬件平台提供低级接口。

    HAL隐藏各种与硬件有关的细节

    3、执行体

    Windows的执行体是 NTOSKRNL.EXE 的上层(内核在其下层)。执行体是从用户态导出并且可以调用函数,这些函数的接口在 NTDLL.DLL 中,通过Win32API可以对它们进行访问。

    4、系统进程和系统线程

    系统进程是一种特殊类型的、只运行在核心态的“系统线程”的宿主。系统线程具有一般用户态线程的所有属性和描述表。不同点在于它们仅运行在内核态,执行加载于系统空间。

    系统线程没有用户进程地址空间,因此必须从系统内存堆中动态存储区。

    系统进程只能从内核态中调出

    二、UNIX 操作系统的体系结构

    其最里层是硬件,作为整个系统的基础。紧邻最里层的是操作系统的内核,它包括进程管理、存储器管理、设备管理、和文件管理四个资源管理功能,往外一层是系统调用接口,即操作系统与用户的接口Shell以及编译程序等;最外层是应用程序。

    1、内核层

    内核层是操作系统管理和控制中心,常驻内存。其包括两个方面的接口,一方面是内核与硬件的接口,它通常是由一组驱动程序和一些基本的例程组成;另一方面是内核和Shell接口,它由两组系统调用及命令解释程序组成。

    内核本身又可以分出两个部分,一部分是进程控制子系统,另一部分是文件子系统。

    (1)进程控制子系统,负责对四个资源中的两个资源-处理器和存储器进行管理。其功能可分为进程控制、进程通信、存储器管理和进程调度

    (2)文件子系统,负责有效管理系统中所有的设备和文件。其功能包括 文件管理、高速缓存机制、设备驱动程序

    2、系统调用层

    系统调用层介于内核层和应用层之间,是供程序员设计、应用程序开发时调用。

    UNIX系统调用包括进程管理、文件管理、终端状态等。

    3、应用层

    应用层包括各种开发工具,高级语言编译器,网络通讯处理程序等。

    所有的应用层程序都是在Shell层(命令语言解释程序)的管理和控制下为用户服务的,是面向用户的操作界面。

    三、Linux 操作系统的体系结构

    Linux系统有四个主要部分,即内核、Shell、文件系统和用户应用程序。内核、Shell和文件系统形成了基本的操作系统结构。

    1、Linux内核

    内核是操作系统的核心,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,它决定了系统的性能和稳定性。

    Linux 内核的组成: 系统调用、内存管理、进程管理、设备驱动程序、文件系统和网络管理

    2、Linux Shell

    Shell 是系统的用户界面,提供了用户和内核进行交互操作的一种接口。它接受用户输入的命令并将它送入内核去执行,是一种命令解释器。

    3、Linux 文件系统

    文件系统是文件存储在磁盘等设备上的组织方法。Linux系统能支持多种目前流行的文件系统,比如:EXT2、EXT3、FAT、FAT32、VFAT和ISO9660。

    4、Linux 应用程序

    标准的Linux系统一般都有一套称之为应用程序的程序集,包括文本编辑器、编程语言、XWindow、办公套件、Internet工具和数据库等。

    四、Android 操作系统的体系结构

    Android操作系统分为四层,从高层到底层分别是应用程序、应用架构层、系统运行层和Linux内核层。

    1、Android应用程序

    Android会同一系列核心应用程序一起发布,该应用程序包括客户端、SMS短消息程序、日历、地图、浏览器等。

    2、Android应用框架

    应用架构层为应用开发者提供了用于访问核心功能的API框架。

    应用架构层提供了各种服务和管理工具,包括应用开发所需的界面管理、数据访问、应用层的消息传递、应用包的管理、电话管理、位置管理等功能。

    3、C、C++本地库和Android运行时环境

    Android包括一些C/C++库,这些库能被Android系统中不同的组件使用。它通过Android应用程序框架为开发者提供服务,如系统C库、媒体库和SQLite库等

    Android 运行时环境(Android Runtime)提供了核心链接库(Core Libraries)和Dalvik VM虚拟系统(Dalvik Virtual Machine)。

    4、Linux 内核

    Android是基于不同版本的Linux内核开发出来的,Linux内核层包括系统层安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块,位于硬件与其他软件层之间,提供与硬件的交互

    摘自:http://www.fzydk.com/31.html

    三、比较常见的操作系统有哪些

    操作系统根据任务的处理方式可以分为简单批处理系统、多道程序批处理系统、多道程序分时系统以及网络操作系统,下面对这几种系统详细介绍。
    1.简单的批处理系统:用户一次可以提交多个作业,但系统一次只处理一个作业,处理完一个作业后,再调入下一个作业进行处理。这些调度、切换系统自动完成。
    2.多道程序批处理系统:简单批处理系统一次只能处理一个作业,系统资源的利用率就不高,因此出现多道程序批处理系统。把同一个批次的作业调入内存,存放在内存的不同部分,当一个作业由于等待输入输出操作而让处理机出现空闲,系统自动进行切换,处理另一个作用,这就是多道程序批处理系统。相对简单批处理系统,由于利用了处理机的空闲时间,因此多道程序批处理系统的资源利用效率要高。
    3.多道程序分时系统:一个作业只能在一个时间片的时间内使用CPU,时间到时,系统将剥夺作业CPU的使用权,然后根据一定的算法将CPU分配给其他作业使用。
    4.网络操作系统:指的是一台计算机通过一个网络接口控制器(熟称网卡)连接网络上,可以进行网络通信功能,网络资源的管理和使用的操作系统。
    根据使用环境的不同,操作系统又可以分为服务器操作系统桌面操作系统嵌入式操作系统
    现在的操作系统采用分时处理的方式执行作业。常见的操作系统有Unix、Linux、DOS、Windows、Mac等。

    常见的操作系统有Unix、Linux、DOS、Windows、Mac等。


    摘自:https://blog.csdn.net/Jake2549794390/article/details/50886806

     

    四、常见的操作系统有哪些?

    1,Microsoft Windows

    Microsoft Windows操作系统是美国微软公司研发的一套操作系统,它问世于1985年。Windows采用了图形化模式GUI,比起从前的DOS需要键入指令使用的方式更为人性化。

    2,Linux

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。

    3,Android

    Android是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由Google(谷歌)公司和开放手机联盟领导及开发。

    4,iOS

    iOS是由苹果公司开发的移动操作系统。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV等产品上。

    5,Mac OS

    Mac OS是一套运行于苹果Macintosh系列电脑上的操作系统。Mac OS是首个在商用领域成功的图形用户界面操作系统。现行的最新的系统版本是macOS 10.14.4 ,且网上也有在PC上运行的Mac系统,简称 Mac PC。

    展开全文
  • UOS是由多家国内操作系统核心企业(包括中国电子集团、武汉深之度科技有限公司、南京诚迈科技、中兴新支点等)自愿发起的计划,全称为 unity operating system,即统信操作系统。平台方面支持龙芯、华为鲲鹏、飞腾、...

    一、测试说明
    在这里插入图片描述
    在这里插入图片描述

    1.1 UOS系统介绍
    UOS是由多家国内操作系统核心企业(包括中国电子集团、武汉深之度科技有限公司、南京诚迈科技、中兴新支点等)自愿发起的计划,全称为 unity operating system,即统信操作系统。平台方面支持龙芯、华为鲲鹏、飞腾、兆芯、海光五大国内平台.

    1.2测试目的
    本次测试主要验证统信操作系统UOS在华为笔记本电脑上的功能及其表现
    二、测试环境
    操作系统类型 硬件配置 软件配置 系统版本 内核版本
    统信操作系统UOS CPU:8核
    内存:8G
    硬盘:系统盘25G、数据盘:400G
    处理器:HUAWEI Kirin 990*8 常用桌面软件:QQ、WPS、微信、360浏览器等 20 SP1专业版64位 4.14.116

    三、测试功能介绍
    1、系统安装
    1.1统信操作系统UOS虚拟机安装
    1.2 统信操作系统UOS U盘安装
    配置要求:CPU:2HZ、内存:推荐4G、2G以上、硬盘:50G以上
    准备工作:一个8G U盘/光盘,将统信操作系统制作成启动盘
    安装步骤:开启计算机,按启动快捷键进入BIOS界面,然后将U盘设置为第一启动项,最后保存。
    重启计算机,按照U盘引导进入系统安装(和安装Windows操作系统信样)

    2、桌面功能
    2.1新建文件夹/文档
    测试目的 测试统信操作系统UOS 桌面功能,实现文档创建、软件排序、图标设置、自动排列、自动整理、壁纸、屏保切换等功能
    测试步骤 在桌面-右击鼠标-新建文件夹-创建文件夹、办公文档、电子表格、演示文档、文本文档
    在这里插入图片描述

    预期结果 能够顺利流畅地在统信操作系统UOS创建文件夹、办公文档、电子表格、演示文档、文本文档

    2.2桌面排列方式
    测试目的 测试统信操作系统UOS 桌面功能,可以通过桌面应用程序/文件等名称、修改时间、大小、类型调整桌面排序方式
    测试步骤 在桌面-右击鼠标-排序方式-选择修改时间、大小、类型
    在这里插入图片描述

    预期结果 能够顺利在统信操作系统UOS对桌面进行排序整

    2.3调整图标大小
    测试目的 测试统信操作系统UOS 桌面功能,能够自行调整桌面图标的大小(极小、小、中、大、极大)
    测试步骤 在桌面-右击鼠标-图标大小-选择极小、小、中、大、极大
    在这里插入图片描述
    在这里插入图片描述

    预期结果 能够顺利在统信操作系统UOS对桌面进行桌面图标大小调整
    2.4设置系统显示器
    测试目的 测试统信操作系统UOS 桌面功能,能够自行设置系统分辨率、亮度、屏幕缩放等等配置(但是系统刷新率无法进行配置,只能是推荐60HZ )
    测试步骤 在桌面-右击-显示设置-进入桌面设置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    预期结果 能够顺利在统信操作系统UOS对系统分辨率、亮度、屏幕缩放等等进行自定义配置

    2.5更改壁纸、屏保
    测试目的 测试统信操作系统UOS 桌面功能,能够自行设置桌面壁纸、屏保 )
    测试步骤 在桌面-右击-显示设置-进入壁纸与屏保设置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    预期结果 能够顺利在统信操作系统UOS设置壁纸与屏保

    是否通过 通过

    3、任务栏
    测试目的 测试统信操作系统UOS 任务栏功能,能够通过任务栏进行快速打开、关闭、强制推出,设置输入法、调节音量、连接WIFI 、查看日历、关机、查看电量
    测试步骤 在统信操作系统UOS 任务栏-打开、关闭、强制推出,设置输入法、调节音量、连接WIFI 、查看日历、关机、查看电量等操作
    在这里插入图片描述
    在这里插入图片描述

    预期结果 能够顺利在统信操作系统UOS快速打开、关闭、强制推出,设置输入法、调节音量、连接WIFI 、查看日历、关机、查看电量等操作
    例如在回收站:电脑中临时删除的所有文件都可以在回收站中被找到、回收站的文件可以被恢复或者清空

    测试目的 测试统信操作系统UOS 任务栏功能,能够通过任务栏进行模式切换(高效模式、时尚模式)、设置任务栏位置(上下左右)、任务栏高度、隐藏/显示任务栏、显示隐藏插件
    测试步骤 在统信操作系统UOS 任务栏,右击可以进行模式切换、设置任务栏位置、任务栏高度、隐藏/显示任务栏、显示隐藏插件等操作
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    预期结果 能够顺利在统信操作系统UOS进行模式切换、设置任务栏位置、任务栏高度、隐藏/显示任务栏、显示隐藏插件等操作

    4、启动器
    测试目的 测试统信操作系统UOS 启动器功能,可以通过启动器进行管理系统中已经安装的所有应用,在启动器中使用分类导航或者搜索功能可以快速找到应用程序、发送应用至桌面/任务栏、运行卸载应用
    测试步骤 在统信操作系统UOS 启动器上进行应用搜索,例如搜索WPS、发送应用至桌面/任务栏、运行卸载应用
    在这里插入图片描述
    在这里插入图片描述

    预期结果 能够顺利在统信操作系统UOS进行WPS 搜索到对应的应用、发送应用至桌面/任务栏、运行卸载应用

    5、软件包安装
    测试目的 测试统信操作系统UOS 启动器功能,可以通过应用商店进行应用软件搜索、安装下载
    测试步骤 1、在统信操作系统UOS 应用商店上进行应用搜索,下载安装应用软件
    2、应用软件官网安装
    预期结果 能够顺利在统信操作系统UOS 应用商店进行应用软件搜索、安装下载
    在这里插入图片描述
    在这里插入图片描述

    6、控制中心
    测试目的 测试统信操作系统UOS 通过控制中心来管理系统的基本设置,包括账户管理、网路设置、日期和时间、个性化设置、显示设置、系统升级等功能
    测试步骤 点击桌面控制中心图标,打开控制中心窗口对系统基本设置进行更改

    在这里插入图片描述
    预期结果 能够顺利在统信操作系统UOS 对系统基本设置进行更改(包括账户管理、网路设置、日期和时间、个性化设置、显示设置、系统升级)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    以上仅仅截取部分功能截图。

    7、设备管理
    测试目的 测试统信操作系统UOS 通过启动器进行设备管理(包括截图录屏、打印机管理、扫描仪管理、投影仪、设备管理器等)
    测试步骤 点击桌面启动器,分别对相对应的设备进行管理(包括截图录屏、打印机管理、扫描仪管理、投影仪、设备管理器等)
    预期结果 能够顺利在统信操作系统UOS 对相对应的设备进行管理操作(包括截图录屏、打印机管理、设备管理器等)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    8、安全与监控
    测试目的 测试统信操作系统UOS 安全与监控功能,可通过安全与监控功能实现实时对电脑处理器、内存占用率、网络上传与下载速度、管理系统进程与应用程序、强制停止应用程序等功能
    测试步骤
    点击桌面启动器,点击打开系统监视器
    预期结果 能够顺利在统信操作系统UOS 通过安全与监控功能实现实时对电脑处理器、内存占用率、网络上传与下载速度、管理系统进程与应用程序、强制停止应用程序等操作
    在这里插入图片描述
    在这里插入图片描述

    9、磁盘管理
    测试目的 测试统信操作系统UOS 磁盘管理功能,能够通过磁盘管理功能实现对电脑磁盘管理操作(包括查看磁盘信息、重命名磁盘、弹出磁盘、格式化磁盘)
    测试步骤 点击桌面启动器-文件管理器-系统盘、数据盘-进行相关操作
    预期结果 能够顺利在统信操作系统UOS通过通过磁盘管理功能实现对电脑磁盘管理操作(包括查看磁盘信息、重命名磁盘、弹出磁盘、格式化磁盘)等磁盘管理操作
    在这里插入图片描述

    10、终端命令
    测试目的 测试统信操作系统UOS 终端命令功能,通过终端命令实现相关系统操作
    测试步骤 点击桌面或者其他任意目录位置,右击选择在“终端中打开”,即可打开命令行终端
    预期结果 能够顺利在统信操作系统UOS打开命令行终端,并且通过命令行终端进行相关系统操作

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    11、搭建WEB应用网站服务
    测试目的 测试统信操作系统UOS 网站服务部署功能
    测试步骤 打开统信操作系统UOS桌面终端,安装部署nginx网站服务
    预期结果 能够顺利在统信操作系统UOS打开命令行终端,并且能够通过命令行终端进行网站服务的搭建部署

    在这里插入图片描述

    12、常用软件功能使用
    测试目的 测试统信操作系统UOS 常用软件使用功能
    测试步骤 打开统信操作系统UOS桌面终端,使用日常应用程序(QQ、微信、360浏览器、WPS 2019、WPS PDF、Mindmaster、福昕版式办公套件)
    预期结果 能够顺利在统信操作系统UOS打开常用软件,并且能够使用应用软件正常功能
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    备注:个人在微信软件功能测试过程中,出现无法登录的情况,目前尚未找到原因。

    四、测试结论
    1、统信操作系统UOS几乎所有桌面功能在使用上与windows系统无太大差别,相对来说对用户使用影响较小
    2、统信操作系统UOS基本日常软件(包括办公软件、社交软件、浏览器软件)在使用方面和windows操作系统几乎难以感觉有太大变化(无论是应用软件的打开、关闭等操作都是比较流畅的,仅有应用软件图标、界面布局可能给用户觉得有些许变化),目前日常使用的各应用软件已经做到和统信操作系统UOS良好适配
    3、统信操作系统UOS鼠标图案和windows操作系统有一些区别,鼠标图案在统信操作系统UOS桌面上有时候会变成一个悬浮球,但这并不是意味着卡顿

    展开全文
  • pv操作指的是两个:p操作和v操作。 有时候我们的进程在工作的时候,需要同时配合来干多件事情。比如,我们规定一个进程用来写入数据,另一个进程用来读取数据。 很显然,这连个进程是不能互相干扰的 ...

    本篇帖子继续上篇。有兴趣可以点击链接进行查看以前写过的文章。
    【系统架构设计师】第一章:操作系统(1.2.2)
    参考教材:
    《系统架构设计师考试全程指导(第二版)》
    《系统架构设计师教程》

    1.2.2 信号量与pv操作

    pv操作指的是两个:p操作和v操作。

    有时候我们的进程在工作的时候,需要同时配合来干多件事情。比如,我们规定一个进程用来写入数据,另一个进程用来读取数据。

    很显然,这连个进程是不能互相干扰的,因此我们就需要提前对系统进行一下告知:使用这些资源的权力我先占用了,其他人不要进来。

    系统得知以后,如果有其他进程要写入数据或者读取数据,就会被系统安排成等待态。
    等我们的进程使用资源完成以后,在告知系统,其他进程可以使用这些资源。

    告知系统不要让其他进程操作这片内存的操作,就是p操作。
    告知系统此进程已使用内存完毕,就是v操作。

    我们因此可以得出使用pv操作的目的:
    为了解决不同进程的互斥(都需要共享独占性资源时)和同步(完成异步的两个进程的协作)问题,需要使用pv操作。

    想想看,如果是你,你会怎么用代码的方式解决呢?

    我这里用的是c语言的方式。

    首先,我们要有一个变量s。
    在pv操作中被称为信号量,表现形式是一个整数s和一个队列。你可以姑且认为这是个整形变量。
    当s>=0,代表某个资源的可用数;
    当s<0,其绝对值代表阻塞队列中等待该资源的进程数。

    其次是p操作。
    根据我们开始所说,p操作就是告知系统这片资源已经被使用,因此只要在本来的资源数上减1即可。不过我们要考虑一种情况,就是当可用资源为0或负数的时候,那么就要让程序进入等待。
    所以我们可以得出:

    if((s=s-1)<0){
    	printf("执行p操作的进程进入等待");
    }
    

    最后是v操作。
    这个同理,减一换成加一即可。

    if((s=s+1)<=0){
    	printf("从阻塞队列中唤醒一个其他处于阻塞态的进程");
    }
    

    互斥实例

    说了这么多,先来个实例,比如,对两个进程进行互斥控制。
    我这里给了两个程序。
    这两个程序是同时运行的,并且变量s是共享的,且初值为1。为了省事,这里我就简写了,省去了main之类的格式。

    我对p和v进行了一些小的修改,这样更符合c语言的标准。

    p:

    if((s=s-1)<0){
    	printf("执行p操作的进程进入等待");
    	return 0;
    }
    else{
    	return 1;
    }
    

    v:

    if((s=s+1)<=0){
    	printf("从阻塞队列中唤醒一个其他处于阻塞态的进程");
    	return 0;
    }
    else{
    	return 1;
    }
    

    进程A

    while(1){
    	if(p(s)){
    		printf("操作一下");
    	}
    	v(s)
    }
    

    进程B

    while(1){
    	if(p(s)){
    		printf("操作二下");
    	}
    	v(s)
    }
    

    仔细分析。
    我们这里先说明一个前提,即使我们的程序同时运行,由于某些特殊的原因,是不可能真正的同时启动的,稍微会有一些误差,比如某个进程会晚0.00000000001秒。我们这里就假设A进程是比较快的那个。

    第一次循环时,A先执行了p,然后s自减,输出了“操作一下”。

    此可我们的B启动,也执行了p,注意此可A还没有执行V,也就是说s还没有自增。由于我们的s已经从1自减到了0,再次执行,s=-1,if不成立,什么都不输出。

    当A执行完成v操作以后,我们的B已经到了第二轮,此可if成立,所以输出了“操作二下”。

    以此类推,你会发现,A和B永远都时一个执行,另一个就跳过。这样,我们就使用pv操作对进程的互斥。

    同步实例

    同步也是类似的操作。直接上例程。不过这次比较特殊,需要用到两个信号量,s1=1和s2=1。
    p:

    if((s=s-1)<0){
    	printf("执行p操作的进程进入等待");
    	return 0;
    }
    else{
    	return 1;
    }
    

    v:

    if((s=s+1)<=0){
    	printf("从阻塞队列中唤醒一个其他处于阻塞态的进程");
    	return 0;
    }
    else{
    	return 1;
    }
    

    进程A

    while(1){
    	if(p(s1)){
    		printf("操作一下");
    	}
    	v(s2)
    }
    

    进程B

    while(1){
    	if(p(s2)){
    		printf("操作二下");
    	}
    	v(s1)
    }
    

    仔细分析。

    这个其实A和B无论是否同时运行都行。

    假设我们的A先运行,执行第一遍的时候没什么问题,正常输出“操作一下”。

    但是当执行第二遍的时候,你会发现,A不会输出了,因为我们的s1从开始循环第二遍的0变成了-1,所以此刻if时不成立的。

    而当我们运行B的时候,B执行v(s2),最终将p增到1,A才会继续走。

    这样,我们就完成了进程之间的同步。

    本篇内容主要介绍的是pv操作的一些细节。
    有兴趣的可以加我qq:1392969921
    下一节已更新。
    【系统架构设计师】第一章:操作系统(1.2.3)死锁问题

    展开全文
  • 操作系统与操作系统内核

    万次阅读 多人点赞 2017-07-06 10:39:57
    总的说来,一个操作系统包含了内核(是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件)以及其他计算机系统所必须的组件(如函数库、编译器、调式工具、文本编辑器、网站服务器,以及一个Unix的...

    一、前言

        最近看了一篇将Unix和Linux历史的帖子,虽然有点水,但是还是放个链接吧花了一天时间,终于把unix、linux、ios、android区别大致联系搞清楚,好像很复杂的,这个帖子写的比较口水话,但是对于了解Unix与Linux的发展与历史还是蛮有帮助的,看了这篇帖子之后,尽管知道了Unix与Linux从无到有的过程,但是发现自己对操作系统这个东西的认识更加模糊了,因为前期大致读过《深入理解计算机系统》和《操作系统》两本书,了解过一些操作系统的内容,但由于是非科班出身,有很多本质的概念并不理解,所以这里就回顾了上面两本书中的一些内容,再加上网上的一些资料,对操作系统和操作系统内核这两个概念进行了整理。


    二、操作系统理解

       一句话理解操作系统:操作系统就是为用户(使用计算机的人)提供服务,使用户能在计算机上使用各种应用程序(QQ、浏览器)来操作计算机资源(如QQ需要使用显示器资源、用浏览器下载资料需要硬盘资源,同时所有这些应用程序都需要使用CPU这个最主要的资源)。

        可以从两方面理解上面这句话,一方面从操作系统本身来理解。其实说起操作系统这个概念,作为非科班出身的我们大多都是比较模糊的,同时感觉跟这个东西就很近,因为在每台计算机中都有一个操作系统,你运行的任何应用软件都离不开操作系统,为什么离不开操作系统呢?其实说白了,一台计算机就是一组资源,你运行在计算机上的应用程序本质上是离不开计算机的各种资源(如处理器、内存、I/O设备等),只是为了方便,人们就构造了操作系统这种东西,因为每一台计算机的各种资源都来自不同的厂家,它们有不同的标准,有不同的差别,所以你针对某一类的I/O设备开发的应用程序就不能在另一台装有不同I/O设备的计算机上运行,而操作系统就完美的消除了这种差别与无法扩展的缺点,所以从逻辑上来说,操作系统位于应用程序与计算机资源的中间层


        同时,作为中间层,必须要干好中间层的工作,所以总的来说,操作系统有两个基本功能

            (1)防止硬件被失控的应用程序滥用;

            (2)向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备

       另一方面,从计算机CPU(处理器)来看,操作系统实际上不过是一组计算机程序(可以理解成很多个应用程序的集合,而这些应用程序基本都是与硬件打交道的),与其他计算机程序类似(不管是你自己写的HelloWord小程序还是像QQ这样的应用程序,以及大型的服务器程序),它们都给处理器提供指令,然后处理器就执行这些指令,完成这些程序的功能,最大的区别在于操作系统和其他程序的意图不同:操作系统程序通过控制处理器使用其他计算机资源,并控制其他程序的执行时机,这促使处理器完成系统任务的调度。但是(刚刚也说明了,操作系统除了和其他程序的意图不同,其他都一样,所以)处理器为了做任何一件这样的事情(指的是执行另一个程序),都必须停止执行操作系统程序,转而去执行其他程序(这其实是进程切换),因为既然操作系统也是一个程序(进程),而任何处理器同时只能处理一个进程,所以操作系统同样和其他程序(进程)一样需要调度,只是操作系统是处于主动调度的位置,而其他程序是被动的由操作系统的控制来实现调度。


    三、操作系统内核

        关于操作系统和操作系统内核这两个概念,很多人尝试去区分与解释,但是发现很难得解释的完全(包括我自己,这里只是把我自己的理解整理出来,有什么不对的地方,希望大家批评指正,共同进步)。

        查看了一些网上和CS系列书籍中的关于操作系统内核的概念解释,总结之后,我的理解是:

            (1)操作系统包括操作系统内核(这是必然的),也就是说内核程序是操作系统所包含的一组计算机程序中的一个子集,所以内核程序也是一组计算机程序,而这些内核程序是操作系统中最常使用基本模块,直接与硬件打交道,主要由用于管理存储器、文件、外设和系统资源的那些部分组成。

            (2)内核程序一直占据内存中的一段内存,这样处理器可以随时调用这些内核程序;

            (3)而操作系统除了内核程序外,还有包括其他一些基本组件,如文本编辑器、编译器、用来与用户进行交互的程序等

        对于第(2)点,可以引入《深入理解计算机系统》这本书中关于“虚拟存储器”(P12)解释的一幅图来说明,如下:


    上图中,关于进程的虚拟地址空间的说明中,最上面的子区域“内核虚拟存储器”就是用来存储内核程序和数据的,这个地址空间是一个固定的结构,所以对于每一个应用程序(进程)来说,都具有同样结构的虚拟地址空间,这就可以保证每个进程都能调用操作系统内核程序来完成自己的功能。

        下面再用一幅图说明操作系统内核是操作系统的一组子程


    上图中,操作系统的内核包围硬件,同时,其外层是系统调用接口,这就是操作系统中除内核以外的其他组件。

        下面整理两个网友关于操作系统与操作系统内核的解释,个人觉得解释的还是比较好的:

            (1)内核,是操作系统的基础模块,用于管理系统资源。例如提供对软件层面的抽象(例如对进程、文件系统、同步、内存、网络协议等对象的操作和权限控制),和对硬件访问的抽象(例如磁盘,显示,网络接口卡(NIC));操作系统,在内核的基础上有延伸,包括了提供基础服务的系统组件。

            (2)内核,就是计算机学科意义上的操作系统,直接与硬件交互,提供CPU时间片管理、中断、内存管理、IO管理等等;一般意义上的操作系统包含的东西要更多一些,至少要有用户交互的基本程序,比如一个命令行界面和基本的指令(文件遍历、进程管理等等),或者图形界面的桌面和文件浏览器。


    四、总结

        总的说来,一个操作系统包含了内核(是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件)以及其他计算机系统所必须的组件(如函数库、编译器、调式工具、文本编辑器、网站服务器,以及一个Unix的使用者接口(Unix shell)等,这些都是操作系统的一部分,而且每一个模块如编译器都是一个单独的进程,运行在操作系统中)。所以一个内核不是一套完整的操作系统,拿Linux来说,Linux这个词本身只表示Linux内核,但现在大家已经默认的把Linux理解成整个Linux系统,这是由于历史原因造成的(具体可以看本文前言中提到的那篇文章),也就是说人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和应用程序的操作系统(也被称为GNU/Linux),而基于这些组件的Linux软件被称为Linux发行版。一般来讲,一个Linux发行版本出来包括Linux内核之外,还包含大量的软件(套件),比如软件开发工具,数据库,Web服务器(例如Apache),X Window,桌面环境(比如GNOME和KDE),办公套件(比如OpenOffice、org)等等。

    展开全文
  • 本文主要参考博客完成,通过SQLite对Android数据库进行简单的操作,包括创建数据库、建表、更新数据、删除数据、插入数据,并通过适配器显示在ListView中。基础免费资源,仅供大家学习。希望对大家有所帮助,是...
  • 对国产操作操系统的一点看法

    万次阅读 2018-09-16 01:24:03
    最近Deepin国产操作系统团队CTO王勇发表离职声明,让大家对国产操作系统的信心再次遇冷。 最近一个月看了一些关于国产操作系统文章,谈一下自己的想法吧。 国产操作系统是真命题还是伪命题 看到这个标题,估计...
  • aspose.words操作word 一些关键方法

    千次下载 热门讨论 2013-05-29 16:22:31
    本资源采用aspose.words 组件实现插入文件,页面设置,替换 表格操作,分页等方法。本资源采用aspose.words 组件实现插入文件,页面设置,替换 表格操作,分页等方法。
  • 操作系统设计与实现中文版(第三版上册)

    千次下载 热门讨论 2013-05-16 15:00:24
    这个资源之前有人竟然分了三个部分,每个部分5分,真是看不过去。果断下载0积分分享
  • 操作系统课程设计-模拟操作系统

    万次阅读 多人点赞 2019-05-20 13:24:16
    操作系统课程设计-模拟操作系统一、功能实现二、运行环境三、功能实现 一、功能实现 计算机操作系统模拟实现 进程管理模拟:实现操作系统进程管理功能,如实现进程的控制(进程创建,状态转换、进程撤销),进程并发...
  • 银河麒麟操作系统

    万次阅读 多人点赞 2018-06-16 22:18:56
    银河麒麟操作系统与优麒麟操作系统一样,是由麒麟软件有限公司开发和维护的两款操作系统,二者均可从优麒麟网站免费下载安装。银河麒麟操作系统支持以x86、PowerPC、SPARC等为代表的国际主流CPU和以飞腾、龙芯、兆芯...
  • 自己动手写操作系统 (PDF)

    千次下载 热门讨论 2008-11-04 01:24:34
    本书用丰富的实例代码,一步一步地指导读者用C语言和汇编语言编写出一个具备操作系统基本功能的操作系统框架,不同于其他的理论型书籍,本书提供给读者一个动手实践的路线图。用理论指导动手实践,用实践深化理解...
  • vim命令操作大全

    千次下载 热门讨论 2013-09-05 12:12:16
    本图片包含大量的常用vim使用命令和操作,而且对所使用的命令进行了分类,方便查阅
  • 无人机新手基础操作教程

    万次阅读 2020-12-09 20:44:27
    远离无人机,解锁飞控,缓慢推动油门等待无人机起飞,这就是起飞的操作步骤。其中推动油门 一定要缓慢,即使已经推动一点距离,电机还没有启动也要慢慢来。 降落时,同样需要注意操作顺序:降低油门,使飞行器...
  • Orange'S:一个操作系统的实现.pdf

    千次下载 热门讨论 2012-10-25 10:42:51
    《orange s:一个操作系统的实现》从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程。书中不仅关注代码本身,同时关注完成这些代码的思路和过程。本书不同于其他的理论型书籍,而是...
  • 数字图像处理之开操作和闭操作

    万次阅读 多人点赞 2018-04-21 15:45:00
    1.理解并掌握形态学图像处理中的开操作和闭操作 2.熟悉并掌握MATLAB软件的使用 实验环境 操作系统:Windows 10 软件:MATLAB R2014a 相关知识 1.定义 开操作:使图像的轮廓变得光滑,断开较窄的狭颈...
  • 计算机基础----32位操作系统和64位操作系统的区别

    万次阅读 多人点赞 2019-01-18 18:01:57
    众所周知,我们通常说操作系统是32位还是64位说的是32位处理器或64位处理器,windows系统有32位和64位,但是最近被问到32位操作系统和64位操作系统有什么区别?一时间只能想到64位操作系统更快,其他具体区别却说不...
  • 扩展操作码的总结

    万次阅读 多人点赞 2016-10-01 13:51:55
    需要建立的一种直观的认知是:既然是扩展操作码,就意味着操作码的位数越变越多! 之所以这么强调,是因为常常混淆了操作码的扩展方向。再看扩展的原理: 假设指令字长是16位,平均劈开成4份,高位4位用作操作码,...
  • C语言位操作宏定义函数

    万次阅读 2021-06-18 15:48:54
    操作宏定义 我们在写C语言时,经常需要用到位操作,但是每次自己使用逻辑运算符进行操作的时候,很费脑子,试试下面几个宏定义吧: #define GET_BIT(value,bit) ((value)&(1<<(bit))) //读取指定位 #...
  • java串口通信操作的jar包rxtx-2.2(内含32位与64位版本)

    千次下载 热门讨论 2016-08-24 11:33:27
    内含32位与64位版本 使用方法如下: 拷贝 RXTXcomm.jar 到 <JAVA_HOME>\jre\lib\ext目录中; 拷贝 rxtxSerial.dll 到 <JAVA_HOME>\jre\bin目录中; 拷贝 rxtxParallel.dll 到 <JAVA_HOME>\jre\bin目录中;...
  • 所以我想发表一下我的个人看法 在我看来,windows7是多用户多任务操作系统。因为同一台电脑确实可以利用远程登录功能实现多个用户同时使用。你可以尝试一下使用QQ的这个远程协助功能。在别人协助帮你解决问题的同时...
  • 实时操作系统与分时操作系统的区别

    万次阅读 多人点赞 2018-10-11 20:42:28
    1. 什么是实时操作系统? 实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务...
  • 操作系统】——PV操作

    万次阅读 多人点赞 2015-04-05 18:49:35
    大家都说操作系统中的PV操作部分看不懂,确实我在专业课中学习这门课时,PV操作被列为书中的重点和难点,就是因为它不好理解。当时自己听完课也是一头雾水,到期末考试结束,也没弄明白这是怎么一回事,更没有意识到...
  • 2014年4月8日起,美国微软公司停止了对Windows XP SP3操作系统提供服务支持,这引起了社会和广大用户的广泛关注和对信息安全的担忧。在这种背景下,国家出于计算机安全考虑,加大了针对操作系统开发力度,各软件企业...
  • 今天刚开始步入苹果的学习,可是在搭建环境的时候,就遇到了一个问题,虚拟机安装黑苹果的时候居然出现了——客户机操作系统已禁用cpu 请关闭或重置虚拟机。我不停的百度,查阅,终于找到了一个解决方案,如下: 当...
  • 不小心进行了错误的操作,想要回到前一步操作的时候 - 撤销与反撤销操作:Ctrl + z,Ctrl + Shift + z 代码跳转后退回操作: 把 View 中的 Toolbar 勾上 这两个箭头就是分别回到前后的代码跳转的位置处 3....
  • 操作系统之进程创建

    万次阅读 2019-06-05 21:31:16
    操作系统基于某种原因决定创建一个新进程时,会按如下步骤操作: 为新进程分配一个唯一的进程标识符。此时,主进程表中会添加一个新表项,每个进程一个表项。 为进程分配空间。这包括进程映像中的所有元素。因此,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,561,478
精华内容 5,024,591
关键字:

操作