操作系统进程线程区别、并发和并行、内存和外存
1.进程
运行起来的可执行文件2.线程
进程内部的一个部分,进程包含线程
3.操作系统是如何管理进程的?
1)先描述一个进程,此处的描述其实就是用C语言的结构体,操作系统中描述进程的结构体称为PCB(process control block)进程控制块
2)再组织若干进程,典型的实现就是使用双向链表把每个进程的PCB给串起来
创建进程:县创建出PCB,然后把PCB加到双向链表中
销毁进程:找到链表上的PCB并从链表中删除
查看任务管理器:遍历链表
4.PCB中的属性
pid:进程id,进程的身份标识 内存指针:指明了这个进程要执行的代码/指令在内存的哪里,以及整个进程执行中依赖的数据都在那里
文件描述符表:进程每次打开一个文件,就会在文件描述符表中增加一项。文件描述符表可以视为一个数组,里面的每个元素又是一个结构体对应一个文件的相关信息。
状态:状态描述了当前进程接下来该怎么调度 1)就绪状态:随时可以去CPU上执行 2)阻塞/睡眠状态:暂时不可以去CPU上执行
优先级:用于分配时间的先后和多少 记账信息:统计每个进程都分别执行了多久,执行哪些指令,排对等了多久。给进程调度提供指导依据的。
上下文:表示了上次进程被调度出CPU的时候,当前程序的执行状态。下次进程上CPU的时候就可以恢复之前的状态继续执行。
进程被调度出CPU之前,要先把CPU中的所有寄存器中的数据都保存到内存中(PCB的上下文字段中),相当于存档
下次进程再被调度上CPU的时候就可以从刚才的内存中恢复数据到寄存器中,相当于读档。
5.并发和并行
并行:微观上两个CPU核心同时执行两个任务的代码
并发:微观上一个CPU核心限制性任务1再执行任务2…只要切换足够快宏观上看起来就好像多任务在同时执行一样
6.进程调度
操作系统在考虑CPU资源如何给各个进程分配,内存资源是通过虚拟地址进行分配的,保障了进程的独立性。
通过虚拟地址空间将进程各自隔离开了,进程之间的通信是通过文件操作或者网络操作。
7.线程产生的原因
频繁的创建/销毁进程成本较高,频繁的调度进程成本也是很高的
解决问题的思路:
进程池,能解决上述问题提高效率,当消耗系统资源太多
使用线程实现并发编程,线程比进程更轻量,无论是创建、销毁和调度线程的成本都比进程低很多。
8.线程为什么比进程更轻量?
进程重量在于资源申请和释放,线程是包含在进程中的,一个进程中的多个线程共用同一份资源(同一份内存+文件)。因此创建进程的第一个线程由于要分配资源成本是相对较高的,后续这个进程创建其他线程就不需要分配资源了,因此成本也会低一点。
9.进程和线程的区别和联系
1)进程包含线程,一个进程里可以有一个或多个线程
2)进程和线程都是为了处理并发编程这样的场景,但是进程在频繁的创建和释放的时候效率低,相比之下线程更加轻量创建和释放效率更高。
3)操作系统创建进程要给进程分配资源,进程是操作系统分配资源的基本单位
操作系统创建的线程是要在CPU上调度执行,线程是操作系统调度执行的基本单位
4)进程具有独立性,每个进程有各自的虚拟空间,一个进程挂了不会影响到其他进程
同一个进程中的多个线程共用同一个内存空间,一个线程挂了可能会影响到其他线程,甚至导致整个进程崩溃
10.内存和外存的区别
1)内存的存储空间较小,外存的存储空间较大
2)内存的访问速度快,外存的访问速度慢
3)内存成本高,外存成本低
4)内存中数据断电后小时,外存数据断电后还在
操作系统进程线程区别、并发和并行、内存和外存相关推荐
- Java--多线程之并发,并行,进程,线程(一)
Java--多线程之并发,并行,进程,线程(一)_MinggeQingchun的博客-CSDN博客 Java--多线程之终止/中断线程(二)_MinggeQingchun的博客-CSDN博客_java ...
- 多少并发量算高并发_如何理解:程序、进程、线程、并发、并行、高并发?
作者:大宽宽 链接:http://tinyurl.com/wx5xxho 在这里你可以了解: 为啥大家说的进程的意思有出入? 为啥并发那么难理解? 为啥高并发不仅仅是"高"+&qu ...
- 【Java扫盲篇】今天用人话给你讲清楚:进程、线程、并发、并行、高并发?
在这里你可以了解: 为啥大家说的进程的意思有出入? 为啥并发那么难理解? 为啥高并发不仅仅是 "高"+"并发" 的意思? 为啥这些概念到了现实当中就不一样了? ...
- 如何理解:程序、进程、线程、并发、并行、高并发?
在这里你可以了解: 为啥大家说的进程的意思有出入? 为啥并发那么难理解? 为啥高并发不仅仅是"高"+"并发"的意思? 为啥这些概念到了现实当中就不一样了? 进程 ...
- Java多线程复习:1(进程和线程、并发和并行)
进程和线程 进程 我们电脑中每一个运行着的程序都是一个进程,程序一旦运行就是进程. 进程可以视为程序的一个实例,大部分程序可以同时运行多个实例进程(如:浏览器.记事本.画图等),也有的程序只能启动一个 ...
- 进程、线程、并发和并行概念
一.进程和线程 进程是一个运行起来的可执行程序.进程有三种状态: 就绪 进程获得了除了CPU外所有必要资源 运行 进程获得了所有资源,开始执行 阻塞 进程正在尚未满足要求,正在等待 线程是程序执行流的 ...
- linux操作系统中查找某个进程,在linux下查看有哪些操作系统进程正在使用某一个共享内存段...
[root@abc log]# ipcs -m ------ Shared Memory Segments -------- key shmid owner perms bytes nattch st ...
- 在计算机中存储器是由内存和外存的区别,简述计算机的内存和外存有何区别与特点?内存是由哪几部分组成?有何特点?...
简述计算机的内存和外存有何区别与特点?内存是由哪几部分组成?有何特点? 答案:4 信息版本:手机版 解决时间 2019-10-06 02:44 已解决 2019-10-05 13:10 简述计算机的 ...
- 操作系统进程线程程序
1.程序是存储在磁盘上包含可执行机器指令和数据的静态实体. 进程是资源分配的基本单位,它是程序执行时的一个实例,即运行中的程序. 线程是进程的一个实体,是系统调度和分配的基本单位. 程序和进程的区别: ...
- 科个普:进程、线程、并发、并行
一.进程 刘大胖打开电脑,想写点东西,于是打开WPS,突然又想和女朋友(反正我不信)聊聊天,就又打开了微信PC端,这时操作系统就会为这两个程序生成两个进程,如图: 二.线程 每个进程至少包含一个线程, ...
最新文章
- 测试Hadoop2.7.1
- jQuery基础 (一)—样式篇
- Hadoop官网的一个WordCount程序
- python怎么更新数据库_在Python的Django框架中更新数据库数据的方法
- SpringMVC之组合注解@GetMapping
- 基于Prometheus和Grafana打造业务监控看板
- 【objectMapper实体转换异常】 com.fasterxml.jackson.databind.exc.MismatchedInputException
- 【C#】CsvHelper 使用手册
- Unknown initial character set index ‘255‘ received from server.
- 02函数极限存在条件
- Sequence of methods in form and table in AX
- 一起谈.NET技术,基于CallContextInitializer的WCF扩展导致的严重问题
- Matlab 边界提取
- 01单片机——基础知识
- 标准差SD、相对标准偏差RSD学习和python实现
- 点网络计算机怎么出现蓝屏,电脑总是出现蓝屏该怎么解决
- Android X86更改屏幕分辨率
- 五阶最小二乘+迭代方法曲线拟合
- MCM/ICM(美国大学生数学建模竞赛)报名指南
- viewflip和viewpage
热门文章
- LR11录制脚本无法弹出IE窗口的解决方案
- SpringBoot之SpringData JPA的基本使用
- Jedis Connection Pool
- 通常我们将python语言程序保存在一个后缀_c 语言程序设计 沈显君课后答案
- win10创建新的计算机用户名和密码,win10电脑怎么新建用户?高手教你在win10新建用户的方法...
- People Counter - People Counting
- 将Ubuntu装入移动硬盘
- python - 例题分析:工时与工资
- 【转】中国只有俩导演,一个叫贾樟柯,一个叫姜文
- 用MATLAB对语音进行基频搬移,语音信号变声处理系.doc