博客
关于我
浅谈操作系统中的进程和线程
阅读量: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/

你可能感兴趣的文章
Python 对mysql数据库的操作
查看>>
Python 对象数据库列表
查看>>
Python 导入requests报错No module named requests
查看>>
Python 将JPEG图片批量改成jpg并删除JPEG图片
查看>>
python 将函数加到列表中进行调用
查看>>
python 将图片与字符串相互转换
查看>>
Python 嵌套字典全面指南
查看>>
Python 工具v简介
查看>>
Python编程入门指南:从零开始探索编程的奇妙世界
查看>>
python 常见内置函数setattr、getattr、delattr、setitem、getitem、delitem
查看>>
Python 常见的错误类型和继承关系
查看>>
python 常量_零基础学Python系列之一:Python的变量与常量
查看>>
Python 并发编程
查看>>
Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能
查看>>
python 序列化操作
查看>>
Python 开发者,这 7 个 VS Code 插件极力推荐
查看>>
python手把手视频_硬货 | 手把手带你构建视频分类模型(附Python演练))
查看>>
python 录音左右声道_Python分离立体声wav压缩文件的左右声道
查看>>
Python 循环异或对文件进行加解密
查看>>
Python开发环境搭建(附VMware安装包及虚拟机环境)
查看>>