Java开发指南!javamap通过value找到key_java map通过value找key_普通网友的博客-程序员宅基地

技术标签: 程序员  面试  java  后端  

1 进程

进程与程序

操作系统之中最为通用的概念就是「进程」。与此相关的面试题以及各种技术优化策略也层出不穷,足以够证明它对于理解操作系统中举足轻重的地位。事实上,通过「进程」,程序员可以更为直观的理解自己所开发的软件,并且能够从中深刻的认识到操作系统在软件运行做了些什么。

简单来讲,进程就是正在执行的程序。每个进程都包含有属于自己的一段地址空间,可以看作是一部分内存空间。在这样的地址空间中,进程能够根据需要进行内存的读写。

地址空间里面一般包含可执行程序,以及对应程序的数据及其堆栈。与每个进程相关的还有一组资源,通常包括寄存器(包括程序计数器和堆栈指针)以及运行程序所需的所有其他信息。从这可以看出,程序本身只是指令、数据以及其组织形式的一种描述方式,而程序的实际的运行实例就是一个进程。

不过进程与程序也并不完全等同,他们不是简单的一一对应的关系,而是在不同层面的表现形式。他们的主要区别在于:

  • 程序是进程的静态文本,而进程是执行程序的动态过程;
  • 进程与程序不是一一对应,同一程序可在不同进程中运行,一个进程也可以执行多个程序;
  • 程序是一种长期可保存的文本,进程是暂时的一次执行过程;
  • 进程是操作系统分配调度的独立单位,而程序是操作系统层级之上的应用程序。
进程状态

从上面我们知道,进程可看作是程序运行的动态过程。那么为了更好的对进程进行描述,我们给运行中的进程定义了三种基本状态,包括就绪、执行和阻塞。

这就是所谓的三态模型,描述了进程在整个运行周期中状态变化。每个状态的转移过程可以通过下图来表示。

就绪状态 是指进程已经被分配到了所有必需的资源,除了CPU。在这个状态下,进程处于箭在弦上随时待发的状态,只要一获得CPU的执行权限,进程便会立刻执行,从而进入执行状态。

当有多个处于就绪状态的进程时,不同的进程会根据优先级被划分入不同的队列。一个因为时间片用完而进入就绪状态的进程会被划分入低优先级队列,而因为I/O操作完成而进入就绪状态的进程,则会被划分入高优先级队列。

执行状态 是指进程正常运行的状态。而当处于执行状态的进程由于需要等待某个事件发送(通常为等待I/O)时,就会放弃CPU,从而进入暂时的阻塞状态。CPU这时一旦空出,通过不同的调度算法,CPU又会被分配给另一个就绪进程。

阻塞状态 相当于就绪状态和执行状态的一个缓冲状态。当处于执行状态的进程无法正常执行时,会先进入阻塞状态,等待需要的请求执行完成,再回到就绪状态,等待下一次的CPU分配和执行。

三态模式是用来描述进程状态转移最为精简的模型,实际上光这三种状态是无法处理复杂的进程运行过程的。所以为了对进程进行更好的管理和调度,在三态模型的基础上引入了两种进程状态,即创建状态终止状态,这就有了五态模型。

创建状态 是指进程刚刚创建的状态,在这个状态下,需要等待操作系统完成创建和分配进程的各种所需信息,包括建立PCB(Process Control Block)<

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_56824583/article/details/118994551

智能推荐

Android-25种开源炫酷动画框架-程序员宅基地

文章浏览阅读1k次。忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮助,此博文介绍的都是UI上面的框架,接下来会有其他的开源框架(如:HTTP框架、DB框架)。1.Side-Menu.Android 分类侧滑菜单,Yalantis 出品。 项目地址:https://github.com/Yalantis/Sid

ClickOnce 部署中的特定错误的疑难解答-程序员宅基地

文章浏览阅读1.8k次。ClickOnce 部署中的特定错误的疑难解答本主题列出以下在部署 ClickOnce 应用程序时可能出现的常见错误,并提供解决每个问题的操作步骤。常规错误当您尝试定位某个 .application 文件时无任何反应,或者在 Internet Explorer 中呈现 XML,或者接收到“运行或另存为”对话框导致此错误的原因可能是没有在服务器或客户端上正确注册 MIME 类型。首先,确保将服务器配置为将 .application 扩展名与 MIME 类型“ap

git fork出的分支如何保持和原分支同步更新-程序员宅基地

文章浏览阅读514次。1.使用命令:git remote -v 显示仓库名和地址。 2.查看是否有上游版本库,如果没有,需要添加:git remote add upstream http://XXX.git 3.fetch 上游仓库到本地分支:git fetch upstream 4.合并到本地分支:git..._fork如何把变更保留在当前分支,再切换到新的分支

sql时间格式化输出、Convert函数-程序员宅基地

文章浏览阅读701次。sql时间格式化输出、Convert函数

Flask连接PostgreSQL数据库_flask连接pg数据库查询数据_XXXT805的博客-程序员宅基地

文章浏览阅读1.9k次。Flask的安装配置配置Anacanda和Python3环境:https://www.anaconda.com/products/individual创建虚拟环境mkdir myprojectcd myprojectpy -m venv venv激活虚拟环境venv\Scripts\activate安装Flaskpip install FlaskFlask使用SQLAlchemy连接psycopg2的安装pip install psycopg2SQLAlchemy的安装pi_flask连接pg数据库查询数据

获取上传文件夹的路径-程序员宅基地

文章浏览阅读769次。public String deleteFile(String fn) throws IOException { String path = ServletActionContext.getServletContext().getRealPath( "/uploadFiles"); System.out.println(path + "/" + fn); File file =

随便推点

单身程序狗解决了一个技术难题后,没有妹子可以炫耀,怎么办?-程序员宅基地

文章浏览阅读1.1w次,点赞106次,收藏196次。看了这些来自程序员的神回复,你就会明白,程序员是世界上最聪明、最具幽默感的一群人。工作相关0. 如果软件正在占领全世界,为什么程序员得不到尊重?遍身罗绮者,不是养蚕人。1...

python - unittest中的setUp与setUpClass-程序员宅基地

文章浏览阅读896次。其实我也没想到,有一天我会记录python的问题。。事情是这样的,最近在支持python SDK,遇到了一件非常神奇的事test class中使用到了一个简单的Callable,定义在setUpClass中,如下class TestClass(unittest.TestCase): @classmethod def setUpClass(cls) -> None: cls.func = get_a_func() def test(self

人工智能工程师学习路线/自然语言处理算法工程师_算法工程师的学习框架-程序员宅基地

文章浏览阅读1.2k次,点赞3次,收藏25次。人工智能工程师学习路线/自然语言处理算法工程师人工智能工程师学习路线自然语言处理算法工程师学习路径1入门级别 1 数据结构 2 算法重点 3python 2进阶阶段 1 机器学习算法 2深度学习算法 3深度学习框架 4 大数据计算框架 3高阶 1 强化学习 2 迁移学习 3自然语言处理 1入门级别 1.1 数据结构 1.2 算法(重点) 面试必考。参考学..._算法工程师的学习框架

关于idea的一些小分享_idea 设置背景图占内存_离群灬的博客-程序员宅基地

文章浏览阅读85次。中文插件点开设置,找到编辑器,点击展开,在Plugins里搜索中文,找到如下的插件安装,安装之后重启就可以了。壁纸设置自从看过艾迪老师的idea壁纸之后,就一直想要试试,到了阶段二的第一件事就是去看了大佬的分享关于壁纸设置。还是在设置里面,展开外观和行为,点击Appearance,找到下方的Background Image点开,在image里找到图片,0pacity为壁纸透明度。主题更换还是在壁纸更换界面,最上方有个Theme,选择其中一种主题就可以了idea运行内存配置如果更改壁纸透_idea 设置背景图占内存

mysql 乘法拼接字符串_【刷穿 LeetCode】43. 字符串相乘(中等)-程序员宅基地

文章浏览阅读346次。题目描述给定两个以字符串形式表示的非负整数 num1 和 num2。返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入:num1="2",num2="3"输出:"6"示例2:输入:num1="123",num2="456"输出:"56088"说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字0-9。nu..._mysql拼接字符转换为乘法算式

软件加密技术及实现-续-01-程序员宅基地

文章浏览阅读1.7k次。两年前,我曾在毕业设计:《软件加密技术及实现》中设想使用“代码转移”来实现更强大的反破解功能。直到前不久,在朋友的鼓励下,我在多个方面增强了原先的软件SoftProtector,并改为图形界面,改名为《秦赢甲胄》(可在各搜索引擎搜索),开始尝试商业化。为了实现更强大的反破解功能,前不久我开始思考实现“代码转移”,不想实现根设想完全两码事,太复杂了:需要对 x86 进行反汇编,代码分析,甚至

推荐文章

热门文章

相关标签