Linux操作系统浅尝辄止
操作系统
操作系统(OS)是当今最复杂的系统软件之一,它几乎是所有复杂应用软件的基础。操作系统本质上是一组程序,他管理和控制其他程序的执行,并充当应用程序和计算机硬件之间的接口。操作系统相当于一个管理者。它的出现是为了使计算机更好的使用。
冯诺依曼体系结构
我们常见的计算机、服务器都遵循着冯诺依曼体系结构。
运算器和控制器称为CPU
所有设备都只能直接和内存打交道
前边说过操作系统是一个管理者,那么如何理解管理,到底管理什么?
管理:
1.描述被管理的对象
2.组织被管理的对象
就像我们学生在教务处被管理起来一样,我们每个同学都会被描述为具有学号,姓名,出生,性别等信息的一个对象,然后全校的学生再被组织起来,例如用数据结构中的链表一样,这样教务处便可以很容易的管理我们任何一个同学。
进程
我们知道一个应用程序没运行起来是存放在磁盘或其他远程的地方,一个程序要运行起来首先得将它加载到内存中去,前边我们在讲冯诺依曼体系结构中说道所有设备都只能直接和内存打交道。当一个程序运行起来,我们将程序运行的活动称为进程。
操作系统是一个管理者,那么进程也是需要被管理的对象,同样,我们先将进程描述起来,再组织起来。
进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
课本上称之为PCB(process control block),Linux操作系统下的PCB是: task_struct
task_ struct内容分类
标示符: 描述本进程的唯一标示符,用来区别其他进程。
状态: 任务状态(就绪,运行,阻塞等),退出代码,退出信号等。
优先级: 相对于其他进程的优先级。(80,-20~19)
程序计数器: 程序中即将被执行的下一条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据: 进程执行时处理器的寄存器中的数据。
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
其他信息
所有运行在系统里的进程都以task_struct链表的形式存在内核里。
进程的地址空间:在Linux下,每一个进程的用户程序都是从虚拟地址 0x08048000 开始分布的,那么多个进程占据的内存是否会发生冲突?不会,因为这里的地址空间指的是虚拟地址空间,不是真正的物理内存地址空间。虚拟地址空间和物理地址空间通过页表的方式映射,所以每个进程都有属于自己的虚拟地址空间。
另外,通常⽗子代码共享,⽗⼦再不写入时,数据也是共享的,当任意⼀方试图写入,便以写时拷贝的方式各⾃自一份副本。具体见下图:
进程调度
长程调度
中程调度
短程调度
决策模式:
非抢占式:进程一旦处于运行状态,就一直执行到终止,或因为等待I/O或请求某些操作系统服务而阻塞。
抢占式:当前运行的进程可能被其他进程抢占,并转移到就绪状态。发生时机:一个新进程到达;中断后一个阻塞进程置位就绪状态;或者基于周期的时钟中断,如时间片到期时。
短程调度策略
FCFS(FIFO)
轮转
SPN(最短进程优先)
SRT(最短剩余时间)
HRRN(最高相应比优先)
反馈
线程
通过上文,我们知道,一个进程(应用程序)做了很多事,提供环境,资源(如内存,打开I/O设备等),还要通过处理器执行程序的流程,我们把有关程序执行流方面的抽象分离出来,就是线程的概念。线程就是对程序执行流的一个抽象,而进程是这个执行流所依赖的一个上下文。一个进程中可以有多个线程,每个线程也想进程一样被描述组织管理起来。
线程的优点:
在一个进程中创建线程所需的开销要比进程少很多,创建线程比创建进程快10倍。
终止一个线程比终止一个进程花费时间少。
同一个进程内线程间的切换比进程间的切换花费时间少。
线程提高了程序间通信的效率。独立的进程间的通信需要内核介入,而同一进程内的线程之间通信不需要。
总之就一句话:同一进程内的线程所需的时间开销要比进程间的时间开销少。
Linux操作系统浅尝辄止相关推荐
- 实验报告Linux操作系统基本命令,linux操作系统实验报告全部.doc
linux操作系统实验报告全部 计算机操作系统 实验报告 学 号:姓 名:提交日期:2014.12.15成 绩: 东北大学秦皇岛分校 [实验题目]熟悉Linux/UNIX操作系统[实验目的]1.熟悉L ...
- Linux哪个和Windows很像,Linuxfx - 这套Linux操作系统看起来和Windows 10非常类似
正如你在截图中所看到的那样,Linuxfx的外观和感觉与Windows 10非常类似,甚至还可以得到一个带有Windows开始按钮的开始菜单,然而,这个实际上可能是一个问题,因为微软可能不喜欢在另一个 ...
- 如何在VMware虚拟机上安装Linux操作系统(Ubuntu)
作为初学者想变为计算机大牛非一朝一夕,但掌握基本的计算机操作和常识却也不是多么难的事情.所以作为一名工科男,为了把握住接近女神的机会,也为了避免当白痴,学会装系统吧!of course为避免把自己的电 ...
- linux操作系统的特点有哪些,LINUX操作系统有哪些概念和特点?
嵌入式LINUX操作系统的概念 以应用为中心,以计算机技术为基础,软件.硬件可裁剪,适应应用系统对功能.可靠性.成本.体积.功耗要求严格的专用计算机系统,称为嵌入式系统.一个最小的嵌入式系统的基本组成 ...
- linux六种进程状态,Linux操作系统中进程的七种状态
Linux操作系统中进程的七种状态 发布时间:2018-05-07 20:43, 浏览次数:741 , 标签: Linux 1 Linux中进程的七种状态(1)R运行状态(runing):并不意味着进 ...
- mysql用户权限与安装Linux操作系统
用户与权限: 关于用户的创建: 我们都知道安装数据库服务器的时候,一般默认的情况下只有一个root用户,但是在公司里一个数据库会有多个人使用,所以自然的一个数据库里需要有多个用户,并且在使用数据库的过 ...
- linux 卸载yaf,LINUX操作系统怎么搭建YAF框架
如何在已经搭建好的php环境下,继续搭建yaf框架环境?那么小编就在本文给大家介绍下搭建方法 LINUX操作系统怎么搭建YAF框架 命令: wget 地址参考图片 命令: tar zxvf yaf-2 ...
- Linux操作系统选择:Debian or Ubuntu
此文首发于我的个人博客:Linux操作系统选择:Debian or Ubuntu - zhang0peter的个人博客 我最开始使用Linux系统的时候选择的是Ubuntu,因为Ubuntu名气大,而 ...
- linux课程设计死锁避免,linux操作系统课程设计—车辆死锁.doc
linux操作系统课程设计-车辆死锁.doc 键入文字"操作系统原理"课程设计BX090709吴沛儒操作系统原理课程设计报告姓名吴沛儒班级BX0907学号9指导老师胡静二〇一一年十 ...
最新文章
- 直方图_20210420
- 阿德:我在去哪儿干了些什么,3个月业绩400%提升
- 50行代码搞定无限滑动幻灯片
- 使用密钥加密码加密_创建基于密码的加密密钥
- 家用计算机机箱怎么选,DIY装机怎么选择电脑机箱 新手必读的电脑主机箱选购指南...
- siesta在Linux运行,siesta-3.0-b
- MFC的非模态对话框资源管理
- 使用OpenCV-python实现手写数字识别
- C# 值类型和引用类型
- ISO 19011 《管理体系审核指南》
- 安徽新华学院计算机学院官网,安徽新华学院计算机协会第十八届换届大会
- Squid中文权威指南-第10章 与其他Squid会话
- 对本课程的期望以及教学建议
- 基于matlab的产生式系统案例
- web js活码生成二维码
- linux离线安装snap应用,Ubuntu使用snap安装常用软件
- 简单快速删除流氓软件(包括注册表)
- Infiniband基本知识
- python renamer模块_python - 发布自己的模块(脚本) 到pypi.org
- 基于6位数码管显示的数字钟
热门文章
- Mininet-WIFI(一) Mininet学习笔记之基本操作
- STM32操作24位AD芯片ADS1246
- MFC界面库BCGControlBar v33.0 - Docking Pane、仪表盘组件升级
- 点阵汉字图片叠加显示【课程实验】
- Shell脚本编程案例集(持续更新)
- Lightroom中几个重要名词术语的解释_我是亲民_新浪博客
- php闪字生成,在线闪字
- TICC2540 HAL KEY服务学习记录
- 电脑html连接电视无信号,康佳液晶电视与电脑连接后无信号输入怎么解决?
- android 播放网络电视,HDP直播tv版 V2.0.5 for android (网络电视)