![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
NeilLiu200
这个作者很懒,什么都没留下…
展开
-
进程-调度
调度策略 对于操作系统来说,cpu的数量是有限的,有些任务优先级较高,有些任务优先级较低,为了有效的利用cpu,这时就有了进程的调度的概念。 在task_struct中,有一个成员变量,用来表示调度策略。 unsigned int policy; 在sched.h文件头 有这样一个#include <uapi/linux/sched.h>打开这个文件,会看到如下定义,是poli...原创 2020-03-20 10:09:46 · 193 阅读 · 0 评论 -
Linux进程数据结构分析
Linux进程结构分析 在 linux 里面,无论是进程、线程,到了内核我们统一称之为任务( Task ),由一个叫做task_struct 的结构统一管理,这个结构体包含了一个进程所需要的所有信息。接下来我们基于 kernel 5.2来分析这个结构。 0x00 task_struct 分析 首先 task_struct 结构体位于 /linux5.2/include/linux/sched.h ...原创 2019-11-01 13:53:21 · 462 阅读 · 0 评论 -
Linux进程数据结构分析
Linux进程结构分析 在 linux 里面,无论是进程、线程,到了内核我们统一称之为任务( Task ),由一个叫做task_struct的结构统一管理,这个结构体包含了一个进程所需要的所有信息。接下来我们基于 kernel 5.2来分析这个结构。 0x00 task_struct 分析 首先 task_struct 结构体位于 /linux5.2/include/linux/sched.h 文...原创 2020-03-20 10:11:00 · 384 阅读 · 0 评论 -
linux进程-从文件到二进制
进程-从文件到二进制 gcc命令 gcc [option] file1 file2 //不加入参数,则按照默认参数依次执行编译、汇编和链接操作,生成可执行的文件名a.out 编译的过程 预处理 编译 汇编 链接 参数 新建一个hello.c文件 #include<stdio.h> int main() { printf("hello world!"); } -E 只...原创 2019-10-09 10:24:03 · 399 阅读 · 0 评论 -
linux基本命令行(一)
linux基本命令行(一) 0x00安装软件 0x01 rpm和dpkg 目的 rpm 用法 dpkg用法 安装指定软件 rpm -i pkgfile.rpm dpkg -i pkgfile.deb 显示所有已安装的软件名 rpm -qa dpkg -l 显示套件包含的所有档案 rpm -ql pkgname dpkg -L pkgname 显示特定档案所属的套件名称 ...原创 2019-09-18 11:28:13 · 111 阅读 · 1 评论 -
linux基本命令行(二)
linux基本命令行(二) 进程-内存-文件 进程 创建进程的的系统调用叫fork,创建一个新的进程,需要一个老进程调用fork来实现,老的进程被称为父进程,新的进程被称为子进程。 当父进程调用fork创建进程的时候,子进程将拷贝父进程所有的文件。 针对这种情况我们往往这样处理:对于fork系统调用的返回值,如果当前进程是子进程返回0;如果是父进程就返回子进程的进程号。 通过if-else判断 ...原创 2019-09-20 10:20:16 · 88 阅读 · 0 评论 -
linux启动流程(一)
linux 启动流程 0x00 What x86 x86是Intel的CPU架构,最初是由16位的8086处理器组成的 CPU和内存之间传递数据需要用到总线 访问内存中某个地址的数据 把这类总线叫地址总线 内存中真正的数据 这类总线叫做数据总线 8086处理器的地址总线是20位, ip寄存器和通用寄存器是16位, 那么总线与寄存器之间的关系是把CS和DS寄存器中的值左移4位 。即: 起始地址1...原创 2019-09-29 16:14:34 · 145 阅读 · 0 评论 -
linux启动流程(二)
Linux 启动流程-内核初始化 想要了解内核的启动过程,就需要查看linux源码了(此文是基于linux 5.2)。查看源码的过程中我们发现,内核的启动是start_kernel()函数,它是位于init包下main.c文件中的方法。 我们在此方法里发现很多xxx_init的方法,也就是做一些初始化操作。 asmlinkage __visible void __init start_kernel...原创 2019-10-09 11:48:35 · 138 阅读 · 0 评论