操作系统、进程、线程、内存
操作系统
AirGo.
[WHY]每一个你不满意的当下,都有一个你不曾努力的过去。
展开
-
一篇文章搞懂Linux内存管理
一、两种内存分配方式固定分区分配:将内存分成不同大小的分区,按照大小保存在一张分区表中,分区表中包括每个分区的起始地址、大小、以及状态(是否分配),当有程序要装入时,由内存分配程序依据用户程序的大小检索该表,从中找出一个能满足要求的尚未分配的分区,并将分区状态改为已分配。 动态分区分配:利用某种分配算法(下面会依次介绍每种分配算法),从空闲分区表中找到所需大小的分区。比如请求的分区大小为si...原创 2020-03-29 19:47:09 · 1512 阅读 · 4 评论 -
linux内核概述
用户态和内核态在理解linux内核之前,首先要知道什么是用户态,什么是内核态,什么是用户进程,什么是内核进程用户进程:我们编写的程序都属于用户进程 内核进程:以内核态运行在内核地址空间,不与用户直接交互,不需要终端设备,在系统启动后一直处于活跃状态直到关机 用户态:用户进程的大部分时间都处在用户态下,只有需要内核所提供的服务时才会切换到内核态 内核态:用户进程调用系统调用、处理CPU...原创 2020-03-15 21:24:21 · 370 阅读 · 0 评论 -
PHP pcntl多进程处理
<?phpecho '开始:'.date('Y-m-d H:i:s',time()) . PHP_EOL;for ($i = 1; $i <= 5; ++$i) { $pid = pcntl_fork(); sleep(1); if (!$pid) { echo '创建子:' . $i . ' ' . date('Y-m-d H:i:s...原创 2019-10-08 16:17:12 · 407 阅读 · 0 评论 -
PHP使用共享内存进程间通信
创建并写入数据<?php$file = __FILE__;$key = ftok($file, 1);$size = 4096;$shmid = shmop_open($key, 'c', 0644, $size);if($shmid === false){ die('create fail');}$data = 'hello world';$packData...原创 2020-03-01 00:57:43 · 515 阅读 · 0 评论 -
通过页表理解进程切换和线程切换开销上的区别
前言为什么用多线程或多进程?程序的大部分耗时在等待IO上,瓶颈不在CPU上时,可以提高CPU利用率 需要集中快速处理大量数据,并且不受先后顺序影响 评论区还可补充ing线程和线程线程的实现可以分为两类:用户级线程:不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,在语言层面利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。不需要用户态/内核态切换,速...原创 2019-10-08 23:08:53 · 5835 阅读 · 10 评论