随笔分类 - Linux
linux笔记
摘要:poll和select的改进版,在一个程序需要处理数百个文件描述符时很有用 2.6内核引入epoll机制,解决了poll和select的性能问题,并加入了一些新特性 poll和select每次调用都需要所有被监听的文件描述符,内核需要遍历所有的文件描述符,当数量变大时,性能消耗巨大 epoll将监听
阅读全文
摘要:汇编 存储程序计算机 图灵机 冯诺依曼机 运算器、控制器、存储器、输入和输出设备 CPU由运算器(算术逻辑单元ALU),控制器和寄存器组成 寄存器程序计数器PC,在IA32(x86-32)中是EIP,指示要执行的下一条指令在存储器中的地址 x86-32汇编 通用寄存器 4个数据寄存器EAX,EBX,
阅读全文
摘要:用户态和内核态 intel x86 CPU有4种不同的执行级别,分别为0,1,2,3 按照intel的设想,内核运行在Ring0级别,驱动运行在Ring1和Ring2级别,应用运行在Ring3级别 linux系统中,只使用了0和3两个级别,分别对应内核态和用户态,使用寄存器CS:EIP的指向范围区分
阅读全文
摘要:进程描述 操作系统通过进程控制块PCB来描述进程,对应Linux内核数据结构struct task_struct 在Linux3.18.6内核中,定义于include/linux/sched.h#1235 pid和tgid标识进程 state进程状态 stack进程堆栈 CONFIG_SMP在多处理
阅读全文
摘要:硬中断和软中断 中断有很多种,但都是程序执行过程中的强制性转移,转移到操作系统内核相应的处理程序 除了主动让出CPU外,进程的调度都需要在进程外(内核)进行,这就需要从进程的指令流里切换出来 中断处理程序是与进程无关的内核指令流,起到切出进程指令流的作用 运行完内核代码后,CPU会检测是否需要进程调
阅读全文
摘要:前面我们模拟了一个带有时钟中断的x86 CPU并初始化了系统变量 只需要在mymain.c基础上完成进程描述符PCB和进程链表管理,在myinterrupt.c中完成进程切换代码,即可完成一个可运行的OS kernel 定义进程描述符PCB linux内核中进程PCB由数据结构struct task
阅读全文
摘要:使用qemu虚拟一个x86 CPU的硬件平台 sudo apt-get install qemu-system-x86 1.下载linux内核代码 wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.4.tar.xz xz -d l
阅读全文
摘要:{ "files.autoSave": "afterDelay", "editor.lineNumbers": "relative", "vim.easymotion": true, "vim.leader": "<space>", "vim.useSystemClipboard": true, "
阅读全文
摘要:[Desktop Entry] Encoding=UTF-8 Name=ApplicationName Comment=ApplicationComment Exec=/path/exe # 可执行文件路径 Icon=/path/icon # icon路径 Terminal=false #软件打开时
阅读全文
摘要:Richard Matthew Stallman 被誉为自由软件的斗士和精神领袖,是伟大的理想主义者。作品: GNU Emacs GPL CopyLeft FSF 进入八十年代后,黑客社群在软件工业商业化的强大压力下日渐土崩瓦解,黑客文化正在受到攻击,Matthew作为一名黑客,于1985年发表了著
阅读全文