毕业设计博客网站开发wordpress多重筛选主题

news/2025/10/5 14:17:25/文章来源:
毕业设计博客网站开发,wordpress多重筛选主题,网站防止恶意注册,开封 网站建设简介进程与线程是所有的程序员都熟知的概念#xff0c;简单来说进程是一个执行中的程序#xff0c;而线程是进程中的一条执行路径。进程是操作系统中基本的抽象概念#xff0c;本文介绍 Linux 中进程和线程的用法以及原理#xff0c;包括创建、消亡等。进程创建与执行Linux…简介进程与线程是所有的程序员都熟知的概念简单来说进程是一个执行中的程序而线程是进程中的一条执行路径。进程是操作系统中基本的抽象概念本文介绍 Linux 中进程和线程的用法以及原理包括创建、消亡等。进程创建与执行Linux 中进程的创建与执行分为两个函数分别是 fork 和 exec如下代码所示int main() {pid_t pid;if ((pid fork() 0) {printf(fork error\n);} else if (pid 0) {// childif (execle(/home/work/bin/test1, test1, NULL) 0) {printf(exec error\n);}}// parentif (waitpid(pid, NULL) 0) {printf(wait error\n);}}fork 从当前进程创建一个子进程此函数返回两次对于父进程而言返回的是子进程的进程号对于子进程而言返回 0。子进程是父进程的副本拥有与父进程一样的数据空间、堆和栈的副本并且共享代码段。由于子进程通常是为了调用 exec 装载其它程序执行所以 Linux 采用了写时拷贝技术即数据段、堆和栈的副本并不会在 fork 之后就真的拷贝只是将这些内存区域的访问权限变为只读如果父子进程中有任一个要修改这些区域才会修改对应的内存页生成新的副本这样子是为了提高性能。fork 之后父进程先执行还是子进程先执行是不确定的所以如果要求父子进程进行同步往往需要使用进程间通信。fork 之后子进程会继承父进程的很多东西如打开的文件实际用户 ID、组用户 ID 等进程组当前工作目录信号屏蔽和安排...父子进程的区别在于进程 ID 不同子进程不继承父进程的文件锁子进程的未处理信号集为空...fork 之后子进程可以执行不同的代码段也可以使用 exec 函数执行其它的程序。进程描述符进程在运行的时候除了加载程序还会打开文件、占用一些资源并且会进入睡眠等其它状态。操作系统为了支持进程的运行必然有一个数据结构保存着这些东西。在 Linux 中一个名为 task_struct 的结构保存了进程运行时的所有信息称为进程描述符struct task_struct {unsigned long state;int prio;pid_t pid;...}进程描述符完整描述了一个进程打开的文件、进程的地址空间、挂起的信号以及进程的信号等。系统将所有的进程描述符放在一个双端循环列表中进程描述符具体存放在内存的哪里呢在内核栈的末尾。众所周知进程中占用的内存一部分是栈主要用于函数调用不过这里说的栈一般指的是用户空间的栈其实进程还有内核栈。当进程调用系统调用的时候进程陷入内核此时内核代表进程执行某个操作此时使用的是内核空间的栈。进程状态进程描述符中的 state 描述了进程当前的状态有如下 5 种TASK_RUNNING进程是可执行的此时进程要么是正在执行要么是在运行队列中等待被调度TASK_INTERRUPTIBLE进程正在睡眠(阻塞)等待条件达成。如果条件达成或者收到信号进程会被唤醒并且进入可运行状态TASK_UNINTERRUPTIBLE进程处于不可中断状态就算信号也无法唤醒这种状态用的比较少_TASK_TRACED进程正在被其它进程追踪通常是为了调试_TASK_STOPPED进程停止运行通常是接收到 SIGINT、SIGTSTP 信号的时候。fork 与 vfork在使用了写时拷贝后fork 的实际开销就是复制父进程的页表以及给子进程创建唯一的进程描述符。fork 为了创建一个进程到底做了什么呢fork 其实调用了 clone这是一个系统调用通过给 clone 传递参数表明父子进程需要共享的资源clone 内部会调用 do_fork而 do_fork 的主要逻辑在 copy_process 中大致有以下几步为新进程创建一个内核栈以及 task_struct此时它们的值与父进程相同将 task_struct 中某些变量如统计信息设置为 0将子进程状态设置为 TASK_UNINTERRUPTIBLE保证它不会被投入运行分配 pid根据传递给 clone 的参数拷贝或者共享打开的文件、文件系统信息、信号处理函数以及进程的地址空间等。返回指向子进程的指针除了 fork 之外Linux 还有一个类似的函数 vfork。它的功能与 vfork 相同子进程在父进程的地址空间运行。不过父进程会阻塞直到子进程退出或者执行 exec。需要注意的是子进程不能向地址空间写入数据。如果子进程修改数据、进行函数调用或者没有调用 exec 那么会带来未知的结果。vfork 在 fork 没有写时拷贝的技术时是有着性能优势现在已经没有太大的意义。退出进程的运行终有退出的时候有 8 种方式使进程终止其中 5 中为正常终止从 main 返回调用 exit调用 _exit 或 _Exit最后一个线程从其启动例程返回从最后一个线程调用 pthread_exit异常终止方式有 3 种调用 abort接收到一个信号最后一个线程对取消请求作出响应exit 函数会执行标准 I/O 库的清理关闭操作对所有打开的流调用 fclose 函数所有缓冲中的数据会被冲洗而 _exit 会直接陷入内核。看下面的代码#include #include #include int main(){printf(line 1\n);printf(line 2); // 没有换行符// exit(0)_exit(0);}其中第二行输出没有 \n如果末尾调用的是 _exit则只会输出 line 1如果替换为 exit则第二行 line 2 也会输出。进程退出最终会执行到系统的 do_exit 函数主要有以下步骤删除进程定时器释放进程占用的页表递减文件描述符的引用计数如果某个引用计数为 0则关闭文件向父进程发信号给子进程重新找养父并且把进程状态设置为 EXIT_ZOMBIE调度其它进程此时进程的大部分资源都被释放了并且不会进入运行状态。不过还有些资源保持着主要是 task_struct 结构。之所以要留着是给父进程提供信息让父进程知道子进程的一些信息如退出码等。需要注意的是如果父进程不进行任何操作那么这些信息会一直保留在内存中成为僵尸进程占用系统资源如下面的代码int main() {pid_t pid fork();if (pid 0) {exit(0);} else {sleep(10);}}父进程 fork 出子进程后子进程立刻退出而父进程则进入睡眠。运行程序观察进程状态可以看到第一行进程为父进程状态为 S表示其正在睡眠而第二为子进程状态为 Z表示僵尸状态(zombie)因为此时子进程已经退出然而 task_struct 还保存着等待父进程来处理。父进程如何处理调用 wait 函数正如本文第一段代码中所示。当父进程调用 wait 后子进程的 task_struct 才被释放。如果父进程先结束了呢在父进程结束的时候会为其子进程找新的父进程一直往上找最终成为 init 进程的子进程。init 子进程会负责调用 wait 释放子进程的遗留信息。线程上面介绍了 Linux 中的进程那么线程又是怎么的网上一些说法是Linux 中并没有真正的内核线程线程是以进程的方式实现的只不过它们之间会共享内存。这种说法有一定道理但并不完全准确。Linux 中刚开始是不支持线程的后来出现了线程库 LinuxThreads不过它有很多问题主要是与 POXIS 标准不兼容。自 Linux 2.6 以来Linux 中使用的就是新的线程库NPTL(Native POSIX Thread Library)。NPTL 中线程的创建也是通过 clone 实现的并且通过以下的参数表明了线程的特征CLONE_VM | CLONE_FILES | CLONE_FS | CLONE_SIGHAND | CLONE_THREAD | CLONE_SETTLS |CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | CLONE_SYSVSEM部分参数的含义如下CLONE_VM所有线程都共享同一个进程地址空间CLONE_FILES所有线程都共享进程的文件描述符列表CLONE_THREAD所有线程都共享同一个进程 ID 以及 父进程 IDNPTL 所实现的线程库是 1:1 的从用户线程映射到内核线程并且内核为了实现 POSIX 的线程标准也做了一些改动比如对于信号的处理等。所以说 Linux 内核完全不区分进程和线程甚至不知道线程的存在这种说法现在是不准确的。线程间共享代码段、堆以及打开的文件等线程私有的部分有以下内容线程 ID寄存器错误码(errno)栈信号屏蔽...总结Linux 中进程与线程的使用是程序员必备的技能而如果能了解一些实现的原理则可以使用的更加得心应手。本文介绍了 Linux 中进程的创建、执行以及消亡等对于线程的实现及其与进程的关系也进行了简单的说明。进程和线程还有更多的内容可以研究如进程调度、进程以及线程间的通信等。参考《UNIX 环境高级编程》《Linux 内核设计与实现》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ Vector算法精讲与底层探秘:从经典例题到性能优化全解析 - 指南

C++ Vector算法精讲与底层探秘:从经典例题到性能优化全解析 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &quo…

20250919_QQ_ICMP

流量分析,ICMP,pysharkTags:流量分析,ICMP,data_len,pyshark 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:20250919_QQ_ICMP.zip 0x01. WP 1. 流量…

手机站点昆明手机网站建设

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为跨语言知识图谱问答。来源:CIKM’2018链接:http://delivery.acm.org/10.1145/3280000/3271704/p247-guan.pdf?ip121.249.15.96&id3271704&accACTIVE%20SERVICE…

福建中江建设公司网站手机会员卡管理系统

文章目录 写在前面Tag题目来源题目解题解题思路方法一:双指针方法二:动态规划 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对…

对于做网站有什么要求wordpress恢复主题

一、fprintf 函数描述 fprintf其作用是格式化打印,也叫格式化输出,可以指定输出到一个流文件中,即相输出流中写入数据。fprintf()函数根据指定的格式(format),向输出流(stream)写入数据(argument)。fprintf( )会根据参数format 字…

Java求职面试:从Spring到微服务的技术挑战 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做团购网站需要什么威海网站建设威海

SpringBoot教程(十五) | SpringBoot集成RabbitMq RabbitMq是我们在开发过程中经常会使用的一种消息队列。今天我们来研究研究rabbitMq的使用。 rabbitMq的官网: rabbitmq.com/ rabbitMq的安装这里先略过,因为我尝试了几次都失败了,后面等我…

2025CSP-S模拟赛59 比赛总结

2025CSP-S模拟赛59T1 T2 T3 T480 WA 20 WA 0 TLE 20 WA总分:120;排名:6/25。 这场比较刺激。T1 其实 A 了,但是忘记特判 \(n=1\) 挂了 20pts。

MCP协议重构AI Agent生态:万能插槽如何终结器具孤岛?

MCP协议重构AI Agent生态:万能插槽如何终结器具孤岛?pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

没有网站 可以做cpa高端品牌运动鞋

热点随笔: [歪谈]员工(人才),留得住是因为本身就留得住;留不住的,你永远留不住(沈逸) 离开北京之前我把过去四年做过的项目的全部源码公开了、需要的联系我、不需要的也欢迎喷水(Suzuki.kakeru) 关于公司…

佛山专业网站建设团队wordpress 分页404

自动登录脚本参考scrapy爬虫启示录-小伙子老夫看你血气方刚这本《爬虫秘录》就传给你了Scrapy初章-Scrapy理论简介Scrapy次章-啥也不干就是爬图Scrapy第四章-设置代理IP偷偷爬图Scrapy第三章-图片存库MysqlScrapy第五章-多线程加速爬图Scrapy终章-1024福利Scrapy最最最终章-搂一…

管理网站怎么做的网站开发都做些什么

据相关研究报告表明,在众多人工智能落地产品或者应用场景中,智能语音机器人无论从产品的成熟度还是应用的广泛度来说,都是人工智能行业最热门和最有前景的产品。智能语音机器人并不只是一款产品,它是所有智能语音系列产品的统称&a…

濮阳中强网站建设dnf怎么做盗号网站

前几天跟一个做培训的朋友喝茶,聊天期间我问他们公司主要做哪些方面的培训,他笑着说他们公司的业务范围可广了,IT培训,MBA考辅,婴幼儿教育,英语培训......言语中流露出无比的自豪,我最后问了一句…

Principal v6.15 中文汉化版安装教程|Mac .dmg 文件安装步骤详解

Principal v6.15 中文汉化版安装教程|Mac .dmg 文件安装步骤详解​Principal​ 是一款功能实用的 ​Mac 平台工具软件​(具体用途可能因版本不同有所区别,常见于效率工具、系统辅助、设计相关或其他专业用途,根据实…

vulkan游戏引擎的vulkan_utils实现 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

百度自己网站排名公司网站 域名 cn com

转载于:https://www.cnblogs.com/studybrother/p/10109433.html

北京易思腾网站建设博兴县建设局官方网站

目录 1. 系统级编程 2. 游戏开发 3. 嵌入式系统 4. 大数据处理 5. 金融和量化分析 6. 人工智能和机器学习 7. 网络和通信 结语 C是一种多范式编程语言,具有高性能、中级抽象能力和面向对象的特性。由Bjarne Stroustrup于1979年首次设计并实现,C在…

【LUT技术专题】图像自适应3DLUT - 指南

【LUT技术专题】图像自适应3DLUT - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

深入解析:基于51单片机的音乐盒键盘演奏proteus仿真

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站搭建大型公司企业电话查询黄页

目录 set 1基本用法 2Set 实例的属性和方法 3遍历操作 3.1 keys() , values() , entries() 3.2 forEach() 3.3遍历的应用 weakset 含义 语法 总结 set 1基本用法 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一…