线程和进程的区别和联系

article/2025/10/30 22:52:10

操作系统任何处理线程

    1.先描述一个进程(明确出一个进程上面的一些相关的属性)
       操作系统里面主要是通过c/c++来实现的,此处的描述其实就是用的c语言中的"结构体"(操作系统中描述进程的这个结构体称为"PCB"(process control block)进程控制块。

    2.再组织若干个进程(使用一些数据结构,把很多描述进程的信息放到一起,方便进行增删查改)

     典型的实现就是使用双向链表把每个进程的PCB给串起来。

1.“创建进程”就是先创建出PCB,然后把PCB加到双向链表中。

2.“销毁进程”就是找到链表上的PCB,从链表中删除。

3.“查看任务管理器”就是遍历链表

PCB中的一些属性

1.pid

pid(进程id)为进程的身份标识

2.内存指针

指向该进程持有的一些重要数据在内存中的位置。
重要的数据包括:a)执行的指令都有啥 b)这些指令依赖的数据都是啥。
内存是操作系统给该进程分配资源的一部分。

3.文件描述符

程序在运行的过程中,经常要和文件打交道(文件是在磁盘上),进程每次打开一个文件,就会在文件描述表上多增加一项(这个文件描述符表可以视为一个数组,里面的每一个元素是一个结构体,就对应一个文件的相关信息),这个文件描述表的下标就称为文件描述符.

一个进程只有一启动,不管你代码中是否写了打开/操作文件的代码 ,都会默认的打开三个文件。   1.标准输入文件                                                                                                                                  2.标准输出文件                                                                                                                                  3.标准错误文件

什么是进程调度?包含了那些属性?

用通俗的话来将就是:一个系统同一时间执行了很多任务,这件事就是“进程调度”(进程调度就是操作系统在考虑CPU资源如何给各个进程分配)

A.有钱的     B.长的帅    C.有钱又帅。我们需要合理的管理时间,避免同一时刻三个人碰面

 2.1状态

      这个状态描述了当前这个进程接下来应该怎么调整                                                                             1.就绪状态:随时可以去CPU上执行                                                                                                 2.阻塞状态/睡眠状态,暂时不可以去CPU上执行

2.2优先级

     先给谁分配时间,后给谁分配时间,以及分给谁多谁少

2.3记账信息

     统计每一个进程,都执行了多久,分别都执行了那些指令,分别都排队等了多久——给进程调度提供了指导依据。

2.4上下文

    表示上次进程被调度出CPU的时候,当时程序的执行 状态条件下,下次进程上的CPU的时候就可以恢复之前状态然后继续往下执行。                                                                                                   进程被调度出CPU之前,要先把CPU中所有的寄存器的数据都给保存到内存中相当于存档。            下次进程再被调度到CPU的 时候,就可以从刚才的内存中恢复到这些数据到寄存器中,相当于读档。

并行和并发

并行:微观上,两个CPU核心,同时执行两个任务的代码                                                                并发:微观上,一个CPU核心,先执行一会任务1,再执行一会任务2,再执行一个任务3.....再执行任务1,只要切换的足够快,宏观上看起来就好像这么多任务同时在进行。

进程的独立性是什么

由于操作系统上,同时运行着很多个进程,如果某个进程出现了BUG,进程崩溃是否会影响其他进程呢?

      进程的独立性保证了如果出现bug不会影响到其他进程,能够做到这一点就是"进程的独立性”来保证的,并且依赖了“虚拟地址空间”

进程间的通信

操作系统中,提供的公共空间很多种,并且各有各的特点,有的存储空间大,有的小,有的速度快,有的速度慢,操作系统中提供了多种这样的进程间的通信机制                                                   主要使用的进程通信方式:                                                                                                                1.文件操作                                                                                                                                           2.网络操作

线程

线程是什么?

线程是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。

举个例子:进程是一个工厂,而线程就是工厂的生产线,一个工厂里面可以有一个生产线和多个生产线

线程在 并发编程上 和进程的区别

通过多进程,我们可以实现并发编程,但是有一个问题,如果频繁的创建/销毁进程,这个事情成本是比较高,如果需要频繁的调度进程,这个事情成本也比较高。

如何解决这个问题呢?

1.进程池

进程池虽然能够解决上述问题,提高效率,同时也有问题,池子里的闲置进程,不适用的时候也在消耗系统里面的资源,消耗的系统资源太多了

2.使用多线程来实现并发编程

线程比进程更轻量,每个进程可以执行一个任务,每个线程也能执行一个任务(执行一段代码),也能过并发编程。

 创建线程的成本比创建进程要低得多                                                                                                 销毁线程的成本比销毁进程要低得多                                                                                                 调度线程的成本比调度进程要低得多

为什么线程比进程更轻量呢?进程重在哪?

进程重在资源申请和释放(在仓库里找东西),线程里包含进程中的,一个进程中的多个线程共用一份资源(同一份内存+文件)

经典面试题

谈谈进程和线程的区别和联系

1.进程包含线程,一个进程里可以有一个线程或者很多线程                                                                 2.进程和线程都是为了处理并发编程这样的场景                                                                                但是进程创建和释放的时候效率 低,相比之下,线程更轻量,创建和释放效率更好                                 3.操作系统创建进程是给进程分配资源,进程是操作分配资源的基本单位,操作系统创建的线程是在CPU上调度执行,线程是操作系统调度执行的基本单位                                                                        4.进程具有独立性,每个进程有各自的虚拟地址空间,一个进程挂了不会影响其他进程,同一个进程中的多个线程共用同一个内存空间,一个线程挂了很可能会影响其他的线程,甚至导致整个进程崩溃.


http://chatgpt.dhexx.cn/article/J8rXNtxc.shtml

相关文章

进程和线程有什么区别?

从用户的角度来看,进程是正在运行的程序实例,而线程是进程中真正执行任务的基本单位。也就是说一个运行的程序至少包含一个进程,一个进程至少包含一个线程,线程不能独立于进程而存在。 进程 进程(Process&#xff09…

线程和进程有什么区别(简单介绍)

线程和进程有什么区别(简单介绍) 简单介绍 一、线程的基本概念 线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可…

线程和进程的区别是什么?

本文转载自知乎 文章目录 1.进程和线程的定义2.二者的区别(解释1)3.两者的区别(解释2) 1.进程和线程的定义 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是…

线程和进程的区别

1、线程和进程的区别 进程:是指一个内存中运行的应用程序(已经在内存中运行的程序). 一个进程都有一个独立的内存空间,一个电脑(手机)可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位; 线…

线程与进程,你真得理解了吗

线程与进程,你真得理解了吗 1 进程与线程的关系和区别2 并行与并发3 线程共享了进程哪些资源 相信大家面试时一定没少被一个问题刁难,那就是进程和线程的区别是什么?这个问题延申开来并不像表面那么简单,今天就来深入一探。 开始…

axure自定义文本框样式

axure中的文本框是我们经常使用的元件,但它本身对样式的设置很有限,不能设置边框样式、阴影等,不能满足我们制作高保真原型的需求,本文给大家介绍一下结合矩形元件自定义文本框样式。(PS:此处的“高保真”指…

html文本框左移动怎么设css,html---文本框样式;

一、一个单行文本框的例子 您的姓名: 您的E_mail: 输入口令: 二、检验用户输入的信息 三、制作一个留言簿 留 言 簿 姓名: E_mail: 留 言 html文本框参考样式 输入框景背景透明: 鼠标划过输入框,输入框…

html 文本域和文本框,html的文本框和文本域样式

如果前边几章学习的比较扎实的话,本节教程就相当容易了。下边先说一下文本框,文本框和文本域都是可以用css进行美化的。比如改变边框精细,颜色,添加背景色、背景图像等。请看下边的实例: .text1 { border:1px solid #f60; color:#03C;} .text2 { border:2px solid #390; w…

[微信小程序专题] 配置文本框样式、排版及点击页面跳转

欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。 问题 如何更改小程序页面中的文本框颜色和边框样式? 如何实现多个文本框的排版? 如何实现点击一个文本框即跳转页面? 我们在使用一个小程序…

php输入文本框样式,【js】:检测用户输入、文本框默认样式设置、设计表格样式实现全选反选...

Topic 1 : 检测用户的输入 : 题目要求: 编写一个用户注册页面 检测用户名是否是6位以下,密码是否是8位以上,如果不满足要求高亮显示文本框 ; 代码如下 :用户注册页面 .bg {background-color: red; } //编写…

html语言文本框怎么做,HTML文本框参考样式

在网页设计中,常常要使用html文本框来收集一些用户信息或是制作登录页,虽然只是简单的输入框,但是如果加入一些美化设计会使你的页面看起来更加有吸引力,下面就给大家提供了一些html文本框的参考样式和常见的html操作技巧,希望对你的网页制作有帮助。首先我们先看看一个最…

vue改造textarea多行文本框样式

代码如下&#xff08;有注释&#xff09;,因为这个是h5&#xff0c;如果需要pc端的&#xff0c;自行把rem乘100转换成px <template> <div class"contain"><textarea v-model"textareaSeason"placeholder"请输入具体原因"class&q…

html input文本框样式,css设置input文本框样式代码实例_html/css_WEB-ITnose

css设置input文本框样式代码实例: 使用css设置input元素的样式是最为常用的操作之一&#xff0c;当然也是最为基础的操作&#xff0c;可能对于刚刚接触css的朋友还不够熟悉&#xff0c;下面就通过一段简单的代码历史演示一下如何设置文本框的样式&#xff0c;当然这个演示可能并…

CSS之文本框样式和水平居中

文章目录 1 CSS使用1.1 文本框样式1.1.1 鼠标一上去变成浅绿色1.1.2 文本框提示样式&#xff0c;鼠标点击获得焦点时提示内容消失1.1.3 input文本框样式1.1.4 只有下划线的文本框1.1.5 软件序列号式的输入框1.1.6 输入框景背景透明1.1.7 鼠标划过输入框&#xff0c;输入框背景色…

【Css】input输入文本框的样式大全和搜索框实例(图文和完整源码)

一、默认显示信息 <input type"text" required"required" placeholder" 请输入金额" name"u"onfocus"if(placeholder 请输入金额){placeholder}"onblur"if(placeholder){placeholder 请输入金额}"v-model:v…

文本框输入的样式

文本框文字的输入样式设计&#xff0c;这里分四种样式&#xff1a; 1、从左到右 2、从右到左 3、从中间到两边 4、两端对齐 效果如下&#xff1a; TextAlignAt.css文件&#xff1a; .left {text-align: left;border: 1px dotted black;width: 50%;}.right {text-align: r…

HTML滚动条

由于四象限中可能会有很多任务&#xff0c;可能会超出象限大小&#xff0c;所以需要加上滚动条。 一般是&#xff1a;overflow:auto这个属性; 同时简单介绍几种HTML滚动条代码&#xff1a; 1、向右滚动代码&#xff1a; <div id"colee_right" style"overf…

html中设置滚动条的样式

一、效果图 二、css ::-webkit-srollbar-track-piece{background:none;-webkit-border-radius:0;} ::-webkit-scrollbar{width:8px;height:8px;} ::-webkit-scrollbar-thumb:vertical{height:50px;background-color:#bbbbbb;-webkit-border-radius:4px;outline:0px solid #…

(css)滚动条样式

(css)滚动条样式 效果&#xff1a; /*滚动条整体样式*/ ::-webkit-scrollbar {width: 2px;/*高宽分别对应横竖滚动条的尺寸*/height: 10px; } ::-webkit-scrollbar-thumb {/*滚动条里面小方块*/border-radius: 10px;width: 2px;height: 60px;background: linear-gradient(0deg,…

vue修改滚动条样式的方法

这篇文章主要介绍了vue修改滚动条样式,首先要知道&#xff0c;修改滚动条样式&#xff0c;利用伪元素-webkit-scrollbar。下面来看看文章内容的具体实现吧 目录 首先要知道&#xff0c;修改滚动条样式&#xff0c;利用伪元素-webkit-scrollbar。 注意&#xff0c; ::-webkit-…