博客
关于我
浅谈操作系统中的进程和线程
阅读量:293 次
发布时间:2019-03-01

本文共 1528 字,大约阅读时间需要 5 分钟。

操作系统中的进程和线程

一、小栗子

在我们日常生活中,进程和线程的概念就像两个相似的但又不完全相同的东西。比如说,当我们打开微信软件时,就启动了一个进程。进程一旦运行起来,就会包含里面所有的操作,比如查看朋友圈、扫一扫等等。这些操作都是通过线程来完成的。从这个小例子可以看出,“进程”是包含“线程”的,“线程”是“进程”的一个子集。

二、简单总结进程和线程

进程

进程是指在系统中正在运行的一个应用程序。程序一旦运行起来,就变成一个进程。从操作系统的角度来看,进程是系统资源分配的最小单位。它负责管理程序运行所需的内存、文件和网络句柄等资源。

线程

线程是系统处理器时间资源分配的基本单元,也是程序执行的最小单位。线程是进程之内独立执行的一个执行流。它允许多个线程在同一个进程内并发执行。

2.1 进程(线程+内存+文件/网络句柄)

从图片内容可以看出,进程不仅包含线程,还包含内存和文件/网络句柄。内存在这里指的是逻辑内存,而不是物理内存。每个进程都有自己的内存空间,这样就能避免进程之间的干扰。文件和网络句柄则是所有进程共享的资源。

内存

内存是我们日常使用的物理内存(如2G/4G/8G/16G),但在进程的内部,它指的是逻辑内存。每个进程都有自己的内存空间,这样可以防止进程之间的干扰。如果内存不是隔离的,其他进程可能会访问到我们的内存,这会带来安全隐患。

文件/网络句柄

文件和网络句柄是进程共享的资源。比如,多个进程可以同时打开同一个文件或占用同一个网络端口。这种共享机制允许多个进程同时进行文件读写或网络通信。

线程

线程是进程内独立执行的单元。一个进程可以包含多个线程,这些线程可以并发执行。线程通过栈、程序计数器(PC)和线程本地存储(TLS)来实现其独立性。

2.2.1 栈

栈是线程执行的核心结构。它用于管理函数调用和返回地址。当一个线程开始执行时,栈会初始化并保存主线程(main)的入口参数和返回地址。随着函数调用,更多的数据会被压入栈中。

2.2.2 PC(程序计数器)

PC是线程执行的核心指针。它指向当前线程正在执行的指令。由于内存中的程序和数据是存放在一起的,PC既指向程序代码,也指向数据变量。每个线程都有自己的PC,确保线程之间不会干扰。

2.2.2.1 缓冲区溢出

缓冲区溢出是一种常见的安全漏洞。攻击者通过向输入缓冲区中输入过长的数据,导致程序运行到超出分配内存区域。这样攻击者就可以注入恶意代码来破坏系统。

2.3 TLS(线程本地储存)

TLS是线程内独立存储的机制。它允许每个线程有自己的数据存储区域。这种存储方式是线程隔离的一种实现方式,确保线程之间不会互相干扰。

3 进程之间是怎么进行交互的呢?

进程之间的交互主要通过网络端口实现。TCP/IP协议的三次握手机制确保了进程之间能够安全地发送和接收消息。

TCP/IP三次握手

TCP/IP三次握手包括客户端和服务器之间的消息交换。第一次握手是客户端发送SYN包给服务器,表示请求连接。第二次握手是服务器回复ACK包并发送SYN包,表示同意连接。第三次握手是客户端发送ACK包确认消息完整性,完成连接。

4 线程之间又是怎样进行交互?

线程之间的交互主要通过共享内存实现。所有线程共享同一个内存空间,只要它们的指针一致,就可以访问彼此的内存。这种方式简单且高效,适合多线程程序的通信需求。

5 小结

1. 进程需要分配一大部分内存,而线程只需要分配一小部分栈空间。

2. 每个系统至少有一个进程,进程至少有一个线程。
3. 进程是资源分配的最小单位,线程是程序执行的最小单位。
4. 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程可以并发执行。

转载地址:http://qcao.baihongyu.com/

你可能感兴趣的文章
NSOperation基本操作
查看>>
NSRange 范围
查看>>
NSSet集合 无序的 不能重复的
查看>>
NSURLSession下载和断点续传
查看>>
NSUserdefault读书笔记
查看>>
NS图绘制工具推荐
查看>>
NT AUTHORITY\NETWORK SERVICE 权限问题
查看>>
NT symbols are incorrect, please fix symbols
查看>>
ntelliJ IDEA 报错:找不到包或者找不到符号
查看>>
NTFS文件权限管理实战
查看>>
ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
查看>>
ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
查看>>
ntp server 用法小结
查看>>
ntpdate 通过外网同步时间
查看>>
ntpdate同步配置文件调整详解
查看>>
NTPD使用/etc/ntp.conf配置时钟同步详解
查看>>
NTP及Chrony时间同步服务设置
查看>>
NTP服务器
查看>>
NTP配置
查看>>
NUC1077 Humble Numbers【数学计算+打表】
查看>>