?在上一节我们讨论了用户态向内核申请内存的接口(系统调用), 发现内核仅仅是判断进程的虚拟地址空间是否足够划分出新的区间, 实际并未分配物理内存. 这是因为内核分配内存的机制是仅当进程实际使用该地址后才为其分配物理内存, 借此提升物理内存使用率. 本节我们就来看看内核究竟是如何分配物理内存的.?以3 ...
分类:
其他好文 时间:
2018-06-27 21:05:06
阅读次数:
227
一个进程在sleep状态如何获取进程的调用栈 TASK_WAKEUPKILL状态 一个进程sleep了,我如何获取他的用户态栈,如何获取用户堆栈 如何在内核态打印用户态+内核态的栈? 确定上一个调用栈 group_exit_task的设置发生在函数fs/exec.c里面 ./fs/coredump. ...
分类:
其他好文 时间:
2018-06-23 21:04:38
阅读次数:
293
并发编程重点: 1,简述计算机操作系统的中断的作用 2,简述计算机内存的“内核态”和“用户态” 3,为什么要有内核态和用户态? 4,什么是进程? 5,什么是线程? 6,什么是系统调用? 7,threading模块event和condition的区别; 8,进程间通信方式有哪些? 9,简述对管道,队列 ...
分类:
数据库 时间:
2018-06-23 11:36:23
阅读次数:
189
基本概念 线程:进程中的某一个处理流程 一个进程可以有多个线程,进程是线程的父进程 所有线程与父进程共享资源 线程分类 内核态线程 由内核调度程序直接调度,充分发挥多处理器的优势 目前linux系统标准线程库采用内核线程方式实现多线程 用户态线程 一个进程包含多个线程,这些线程从内核调度角度来看只是 ...
分类:
编程语言 时间:
2018-06-23 01:31:54
阅读次数:
160
一、cpu的使用率计算cpu的使用率的获取可以通过top命令或者/proc/<pid>/stat文件以下是计算cpu使用率有关的参数:pid=17184进程号utime=45010该任务在用户态运行的时间,单位为jiffiesstime=4050该任务在核心态运行的时间,单位为jiffiescutime=0所有已死线程在用户态运行的时间,单位为jiffiescstime=0所有已死在核
分类:
系统相关 时间:
2018-06-22 21:47:02
阅读次数:
219
协程:单线程下的并发。又称微线程。是用户态的轻量级线程,即协程是由用户程序自己控制调度的 要遇到IO才切。 比线程开销更小。 修改共享数据不用加锁 yield greenlet都无法做到遇到IO就切换 gevent 可以监控多个任务之间的IO,遇到IO切换到另一个任务。 yield: Greenle ...
分类:
其他好文 时间:
2018-06-17 16:01:05
阅读次数:
158
发送数据包的时候,用户态的数据包是如何拷贝到内核的kiovec msghd 结构体 icmp是走sock吗? 每一个skb_buffer的大小都是固定的吗?所以有skb_available这样的函数 skb->end和skb->tail有什么区别?end tail reserved_room end ...
分类:
其他好文 时间:
2018-06-17 00:13:09
阅读次数:
198
模拟单线程情况下muduo库的工作情况 muduo的源代码对于一个初学者来说还是有一些复杂的,其中有很多的回调函数以及交叉的组件,下面我将追踪一次TCP连接过程中发生的事情,不会出现用户态的源码,都是库内部的运行机制。下文笔者将描述一次连接发生的过程,将Channel到加入到loop循环为止。 监听 ...
分类:
其他好文 时间:
2018-06-16 19:13:26
阅读次数:
200
一、协程(Coroutine) 1.知识背景 协程又称微线程,是一种用户态的轻量级线程。子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。所以子程序调用是通过栈实现的,一个线程就是执行一个子程序。子程序调用总是一 ...
分类:
编程语言 时间:
2018-06-12 21:37:28
阅读次数:
188
什么是线程的同步与互斥? 互斥:指在某一时刻指允许一个进程运行其中的程序片,具有排他性和唯一性。 对于线程A和线程B来讲,在同一时刻,只允许一个线程对临界资源进行操作,即当A进入临界区对资源操作时,B就必须等待;当A执行完,退出临界区后,B才能对临界资源进行操作。 同步:指的是在互斥的基础上,实现进 ...
分类:
编程语言 时间:
2018-06-11 14:50:50
阅读次数:
300