进程和操作系统概述

进程和操作系统概述

进程的基础

程序和进程:

程序是一对静态的代码文件

进程是一个正在运行着的程序,抽象概念

进程由操作系统操控调用交于CPU运行

操作系统

1.管理控制协调计算机硬件和软件的关系

2.操作系统的作用?

第一个作用:将一些对硬件操作的复杂丑陋的接口,变成简单美丽的接口. open函数.

第二个作用:多个进程抢占一个(CPU)资源时,从操作系统会将你的执行变得合理有序.

​ 阻塞: input read write sleep recv accept sendto recvfrom .....

操作系统发展史

最早出现的计算机: 算盘.

电子类的计算机发展史:

第一代计算机1940~1955

在大学里出现了机房,想使用计算机必须预约.

先连接调配各个硬件,1.5小时, 真空管, 然后在插上程序调试.效率低.

优点: 个人独享整个计算机资源.

缺点:

  1. 硬件调试插线,耗时
  2. 所有人都是串行执行.

第二代计算机 磁带存储---批处理系统 1955~1965

优点:

  1. 程序员不用亲自对硬件进行插线操控,效率提高.
  2. 可以进行批量处理代码.

缺点:

  1. 程序员不能独自使用计算机.
  2. 你的所有程序还是串行.

第三代计算机:集成电路,多道程序系统

大背景:

  1. 集成电路: 把所用的硬件变小,线路板.
  2. 将两套不同的生产线合并成一条生产线.

技术上的更新:多道技术

1.空间上的复用:将内存分区域,一个内存可以同时加载多个进程

2.时间上的复用:实现将CPU在多个进程之间来回切换,并且保留状态

几乎所有的程序又有IO阻塞,

洗衣服: 10分钟 50分钟

烧水: 5分钟 10分钟

做饭: 15分钟 5分钟

同时加载到内存 3个任务,3个进程,每个进程都有阻塞情况,只要cpu运行一个进程时,遇到IO阻塞立马回切换,长时间占用cpu也会切换.

提升效率,最大限度的使用cpu.

如果是一个IO密集型进程,来回切换提升效率.

如果是一个计算密集型,来回切换降低效率.

第三代计算机广泛采用了必须的保护硬件(程序之间的内存彼此隔离)之后,第三代计算机应用而生:

每个人占用计算机的时间有限的,

多人(少于10个) 共同使用一个计算机主机,

第四代计算机: 至今.

进程的理论

串行: 所有的任务一个一个的完成.

并发: 一个cpu完成多个任务.看起来像是同时完成.

并行: 多个cpu执行多个任务,真正的同时完成.

1729998-20190819154724651-970539053.png

阻塞: cpu遇到IO就是阻塞.

非阻塞: 没有IO,就叫非阻塞.

  1. 程序: 一堆静态文件

  2. 一个正在执行的程序任务,一个进程.

  3. 一个程序能否开启多个进程? 可以.

  4. 进程的创建:

    一个子进程必须依赖于一个主进程才可以开启.

    一个主进程可以开启多个子进程.

    unix: fork创建子进程.

    unix(linux,mac): 创建一个子进程会完完全全复制一个主进程所有的资源,初始资源不变.

    windows: 操作系统调用CreateProcess 处理进程的创建.

    windows:创建一个子进程,会copy主进程所有的资源,但是会改变一些资源.

  5. 程序的状态:

1729998-20190819154712124-1268495982.png

转载于:https://www.cnblogs.com/lifangzheng/p/11377580.html

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

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

相关文章

iOS手势操作简介(一)

iOS中能够响应手势操作的类必须要继承自UIResponder,才能够处理手势响应操作。 默认继承了UIResponder的类有:UIApplication UIViewController UIView都继承自UIResponder. UIView是UIResponder的子类,可以实现下列4个方法处理不同的触摸事…

iOS开发中手势处理简介(二)

iOS中手势操作事件的产生于传递 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中 UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口&#x…

对前端Jenkins自动化部署的研究

1. 安装 安装 Nginx 1.1去官网下直接下载,解压缩 start nginx就可以使了,常用命令: start nginx # 启动 nginx -s reload # 修改配置后重新加载生效 nginx -s reopen # 重新打开日志文件 nginx -t # 配置文件检测是否正确 1.2 安装Jenkins…

python超神之路:Python3 列表list合并的4种方法

Python3 列表list合并的4种方法 方法1: 直接使用""号合并列表 aList [1,2,3] bList [www, pythontab.com] cList aList bList dList bList aList print(cList) print(dList) # 结果: [1, 2, 3, www, pythontab.com] [www, pythontab.com, 1, 2, 3] …

iOS手势操作简介(三)

监听触摸事件的做法 如果想监听一个view上面的触摸事件,之前的做法是 自定义一个view 实现view的touches方法,在方法内部实现具体处理代码 通过touches方法监听view触摸事件,有很明显的几个缺点 必须得自定义view 由于是在view内部的to…

iOS手势操作简介(四)

当事件传递到相应的UIResponder后,会首先调用: hitTest:withEvent: return (UIView *) UIApplication -> UIWindow 什么时候调用:当事件传递给一个控件的时候就会调用 作用:找最合适的viewhitTest:withEvent: return (UIView…

ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)...

在上一章中主要和大家分享在MVC当中如何使用ASP.NET Core内置的DI进行批量依赖注入,本章将继续和大家分享在ASP.NET Core中如何使用Autofac替换自带DI进行批量依赖注入。 PS:本章将主要采用构造函数注入的方式,下一章将继续分享如何使之能够同…

iOS手势操作简介(五)

利用手势操作实现抽屉效果: 第一步:搭建UI (void)addChildView { // left UIView *leftView [[UIView alloc] initWithFrame:self.view.bounds]; leftView.backgroundColor [UIColor greenColor]; [self.view addSubview:leftView]; _leftView…

Java过滤器与SpringMVC拦截器之间的关系与区别

今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已…

iOS手势操作简介(六)

利用UIGestureRecognizer来对手势进行处理: interface HMViewController () property (weak, nonatomic) IBOutlet UIImageView *imagView; end implementation HMViewController (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup aft…

iOS并行程序开发- GCD NSOperationQueue(1)

import UIKit let imageURLs [“http://www.planetware.com/photos-large/F/france-paris-eiffel-tower.jpg“, “http://adriatic-lines.com/wp-content/uploads/2015/04/canal-of-Venice.jpg“, “http://algoos.com/wp-content/uploads/2015/08/ireland-02.jpg“, “http:…

二次幂权限设计

设置含有的权限如增删改查减为1,2,4,8,16 如果A包含增删改这5个权限,那A的值为1247 如果B包含增改查这5个权限,那A的值为14813 如果C包含增删改查减这5个权限,那A的值为12481631 7二进制为111,13的二进制为1101,31二进制为11111 1二进制为1&a…

最好用的koa2+mysql的RESTful API脚手架,mvc架构,支持node调试,pm2部署。

#基于webpack构建的 Koa2 restful API 服务器脚手架这是一个基于 Koa2 的轻量级 RESTful API Server 脚手架,支持 ES6, 支持使用TypeScript编写。GIT地址:https://github.com/Allenzihan/koa2-mysql-framework.git此脚手架只安装了一些配合koa2使用的必要…

使用putty在linux主机和windows主机之间拷贝文件(已测试可执行)

转载于,请点击 首先下载putty,putty下载地址zip, 解压zip发现里面有plink.exe pscp.exe psftp.exe putty.exe puttygen.exe puttytel.exe等可执行文件,如果只是想要链接主机做一些操作那么使用putty.exe,要想要上传 …

博客园在升级的路上,不妨更自信些,同时说说我们可以为博客园做些什么

最近,博客园在技术升级上做了积极向上的努力,虽然中间过程出现反复,但姑且先不论最终升级后客户体验方面的提升,在升级过程中探索排查问题和解决问题的过程,本身就能帮助博客园团队和广大用户积累经验和提升能力&#…

iOS中持久化存储SQLite(一)

在iOS中做持久化存储有多种方案,其中包括plist, preference, sqlite, core data,其中: (1)plist, preference适合小型数据存储,因为每次存储前都必须将文件内容读到内存中,因此如果数据量过大就会占用大量…

多进程相关内容

多进程相关内容 multiprocessing模块与process类 multiprocessing python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程。Python提供了multiprocessing。…

iOS中SQLite持久化存储第三方库FMDB

interface HMShopTool : NSObject (NSArray *)shops; (void)addShop:(HMShop *)shop; end implementation HMShopTool static FMDatabase *_db; (void)initialize { // 1.打开数据库 NSString *path [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, N…

python超神之路:python异常对照表

python异常对照表 异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常是输入^C)Exception常规错误的基类StopIteration迭代器没有更多的值GeneratorExit生成器(generator)发生异常来通知退出StandardError所有的内建标准异常…

python超神之路:创建对象的9种方法

python生成对象的9种方法 class Point:def __init__(self,x,y):self.x xself.y y import sys import copy import typespoint1 Point(1,2) point2 eval("{}({},{})".format("Point",1,2)) point3 globals()[Point](1,2) point4 locals()["Point…