在这篇文章中,主要介绍CPU的一些基础知识. 首先介绍一下Linux kernel中的调度器(scheduler),调度器负责调度系统中的两种资源,一是线程,二是中断。调度器给不同资源不同的优先级。从高到低为: 1. 硬件中断(Hardware Interrupts)--这些请求由硬件触发,比如磁盘已经完成了读写任务或是网卡受到了新的数据包。 2. 软件中断(Software Interrupts)--这里指的是维护内核运行的内核态软件中断。比如内核的时钟管理进程。
进程内核态堆栈结构:进程是动态实体,进程描述符是存放在动态内存中的。在一块进程内存区上,Linux存放了两个数据结构:指向task_struct得thread_info和内核态的进程栈。大小一般2页8K,这要求页面帧对齐2的13次幂,在X86上编译时可以配置大小为4K。thread_info在内存区开始处,内核栈从内存尾向下增长。
Linux缺页中断处理1.请求调页中断:进程线性地址空间里的页面不必常驻内存,例如进程的分配请求被理解满足,空间仅仅保留vm_area_struct的空间,页面可能被交换到后援存储器,或者写一个只读页面(COW)。Linux采用请求调页技术来解决硬件的缺页中断异常,并且通过预约式换页策略。主缺页中断和次缺页中断,费时的需要从磁盘读取数据时就会产生主缺页中断。
一、逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到。我们写个最简单的helloworld程序,用gccs编译,再反编译后会看到以下指令:mov 0x80495b0,%eax这里的内存地址0x80495b0就是一个逻辑地址,必须加上隐含的DS数据段的基地址,才能构成线性地址。
要了解 Linux 之前,就不能不知道什么是操作系统 ( Operation System, OS ),所以,首先我们来简单的说一说什么是操作系统吧!先来想一想,当我们使用计算机时,屏幕上面显示的咚咚是由哪里来的?嗯!是由显示卡与屏幕显像的;那么你现在可以藉由网络看到这篇文章,则是藉由 Internet 、网络卡、网络线以及所有相关的电子器材与网络器材所完成的一项任务!如果你要看 VCD 呢?那么就需要光驱、光盘、声卡的发声等等的支持。这么说来的话,所以在『工作』的东西都是『硬件』的工作呀!对了!就是这些计算机硬件在工作的。那么硬件怎么工作呢?那就是藉由『操作系统』来达成的啰!这个操作系统就是在沟通你这个使用者跟硬件之间的讯息传递啦!也就是说,没有操作系统,那么你的计算机硬件就只是一堆废铁,什么工作都不能做的!
实验四系统管理及vi编辑器的使用按照以下提示进行操作,写出关键步骤命令,回答相关问题,并写在实验报告中:1、用vi编辑器打开以一个新文件名newfile的文件,并插入当前磁盘分区信息,然后把vi编辑器转入后台,杀死该vi编辑器的进程,然后再用vi编辑器恢复打开该newfile文件。
实验二Linux文件系统回答以下问题并写在实验报告中:查看在你所使用的Linux系统的根目录上有哪些目录,并说明它们的作用是什么?Bin:用于存放供管理员和用户使用的重要linux命令的二进制文件,包括shell解释器等。
实验三Linux系统管理按照以下提示进行操作,写出关键步骤命令,回答相关问题,并写在实验报告中:1.查看系统目前已经建立了那些用户?新建一个c用户,登陆密码为:cccccc.
嵌入到Linux正式Kernel(提高兼容性) 代码级资源调用(提高性能) 虚拟机就是一个进程(内存易于管理) 直接支持NUMA技术(提高扩展性)
常见的Linux操作系统登录文件有如下几个:1)/var/log/secure:记录登录系统存取数据的文件;例如pop3,ssh,telnet,ftp等都会记录在此.2)/ar/log/wtmp:记录登录这的信息记录,被编码过,所以必须以last解析;
第一章:Linux基础知识一.LINUX/UNIX简介是一套免费使用和自由传播的类UNIX系统主要基于INTELX86系列CPU的计算机.由全世界各地的成千上万程序员设计和实现.(可以在网上查相关资料)二.发展**三.特点1.开放性(开放源代码)2.多用户3.多任务(同时运行多个进程)4.可靠的系统安全5.良好移植性*四.LINUX安装1.文件系统A.ext2B.ext3(为ext2升级,增加了日志功能,遇到非法关机,也能保存数据)。
主要内容:命令的使用方式 文件及目录操作命令 文件压缩命令 联机帮助命令 进程管理的命令使用命令命令的使用方式一般的Linux使用者均为普通用户,而系统管理员一般使用超级用户帐号完成一些系统管理的工作。一般超级用户的用户名为“root”,提示符为“#”。而一般用户的提示符为“$”。Linux系统是以全双工的方式工作,即从键盘把字符输入系统,系统再将字符回送到终端并显示出来。
Linux服务器:SuSe10 sp2 64位<br> Oracle服务器:Oracle11gR2 64位
linux和os:netstat:显示网络状态tcpdump:主要是截获通过本机网络接口的数据,用以分析。能够截获当前所有通过本机网卡的数据包。它拥有灵活的过滤机制,可以确保得到想要的数据。ipcs:检查系统上共享内存的分配ipcrm:手动解除系统上共享内存的分配(如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的概率较小^_^,这四个命令的熟练掌握程度基本上能体现面试者实际开发和调试程序的经验)cpu内存硬盘等等与系统性能调试相关的命令必须熟练掌握。
知道异步IO已经很久了,但是直到最近,才真正用它来解决一下实际问题(在一个CPU密集型的应用中,有一些需要处理的数据可能放在磁盘上。预先知道这些数据的位置,所以预先发起异步IO读请求。等到真正需要用到这些数据的时候,再等待异步IO完成。使用了异步IO,在发起IO请求到实际使用数据这段时间内,程序还可以继续做其他事情)。假此机会,也顺便研究了一下linux下的异步IO的实现。linux下主要有两套异步IO,一套是由glibc实现的(以下称之为glibc版本)、一套是由linux内核实现,并由libaio来封装调用接口(以下称之为linux版本)。
以 Linux 为代表的自由操作系统的很多优点之一, 是它们的内部是开放给所有人看的. 操作系统, 曾经是一个隐藏的神秘的地方, 它的代码只局限于少数的程序员, 现在已准备好让任何具备必要技能的人来检查, 理解以及修改. Linux 已经帮助使操作系统民主化. Linux 内核保留有大量的复杂的代码, 但是, 那些想要成为内核 hacker 的人需要一个入口点, 这样他们可以进入代码中, 不会被代码的复杂性压倒. 通常, 设备驱动提供了这样的门路.<br> 驱动程序在 Linux 内核里扮演着特殊的角色. 它们是截然不同的"黑盒子", 使硬件的特殊的一部分响应定义好的内部编程接口. 它们完全隐藏了设备工作的细节. 用户的活动通过一套标准化的调用来进行, 这些调用与特别的驱动是独立的; 设备驱动的角色就是将这些调用映射到作用于实际硬件的和设备相关的操作上. 这个编程接口是这样, 驱动可以与内核的其他部分分开建立, 并在需要的时候在运行时"插入". 这种模块化使得 Linux 驱动易写, 以致于目前有几百个驱动可用.
libpcap是unix/Linux平台下的网络数据包捕获函数包,大多数网络监控软件都以它为基础。libpcap可以在绝大多数类unix平台下工作,本文分析了libpcap在Linux 下的源代码实现,其中重点是Linux的底层包捕获机制和过滤器设置方式,同时也简要的讨论了 libpcap使用的包过滤机制 BPF。
Linux个人学习小结
linux-find命令总结这里总结一些常用到的关于find的命令的操作:Find命令的一般形式为:#findpathname-options[-print-exec-ok]让我们来看看该命令的参数:pathnamefind命令所查找的目录路径。
本书是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了多个应用示例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附录中给出了函数原型和部分习题的答案。<br> 本书内容权威,概念清晰,阐述精辟,对于所有层次UNIX程序员都是一本不可或缺的参考书。