进程和线程
进程是操作系统提供的抽象。即所有的cpu只能使用一个。
一、进程
在进程模型中。计算机所有可运行的软件,包括操作系统,被组成程顺序进程,简称为进程。
一个进程就是一个程序运行的实例,它包括程序计数器,寄存器,和变量的当前值。
进程和程序的区别
一个进程,就是某种类型程序的一次运行的过程,它包括输入输出,以及状态、程序。如果一个程序被运行了两次。那么是两个进程。因为内存中,会共享代码。但是不会改变进程的状态。
四种事件导致进程的创建
1.系统初始化(init)
2.执行了正在运行的进程所调用的进程进行系统调用(fork)
3.用户请求创建一个新进程
4.批处理作业的初始化
在unix操作系统中,只有一个系统调用可以创建进程,就是fork。这个系统调用创建一个和调用进程相同的副本
进程的终止
进程出现以下情况会终止
1.正常退出(exit)
2.出错退出
3.严重退出
4.被其他进程杀死 (kill)
进程的层次结构
一个进程中创建了另外一个进程,则新创建的进程就是子进程,它和父进程以某种形式保持关系。一个进程只有一个父进程。可以有0个或者多个子进程。
在unix系统中,有一个init进程。它是进程树的根。
进程的状态
cat hello.txt | grep world
这将是两个进程 cat 和grep
进程的状态。有三种 就绪=》运行=》阻塞
转换2和3之间的状态,是进程调度,由操作系统完成。
进程实现
实现进程,操作系统需要维护一张表格,即进程表。这个表包含以下的字段信息
二、线程
线程又叫迷你进程,是存在进程的单元。线程之间共享内存。线程更轻量。创建线程比创建线程开销小的多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现