【Linux】
viclee108
即使不能成为巨人,也要始终站在巨人的肩膀上
展开
-
加载模块到linux内核的方法
编写 helloworld.c文件: #include #include static int hello_init(void) { printk("Hello world ./n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye world ./n"); } module_init(hello_init); //模块加载时调用 hello_init()函数 module_exit(h原创 2010-10-12 16:38:00 · 1450 阅读 · 0 评论 -
Linux内核之do_exit
do_exit(long code)(1) __exit_mm(tsk): //释放存储空间(2) sem_exit(); //释放用户空间的“信号量”(3) __exit_files(tsk); //释放已经打开的文件(4) __exit_fs(tsk); //释放用于表示工作目录等结构(5) exit_sighand(tsk);//释放信号处理表 (6) exit_thread();(7) tsk->exit_code = code;(8) exit_notify();转载 2011-05-11 14:03:00 · 5826 阅读 · 0 评论 -
关于menu.lst 中的VGA设置
在/boot/grub/目录下的menu.lst或grub.conf 文件中vga 的十进制参数设置。默认情况下在 F10 中该配置文件是没有 vga 选项的,需要自己手动添加,在 menu.lst 中有这样一行:kernel /vmlinuz-2.6.*.fc10.i686 ro root=/dev/VolGroup00/LogVol00 rhgb quiet只要在最后添加 v转载 2011-06-19 15:40:00 · 1748 阅读 · 0 评论 -
调整vmware虚拟机硬盘空间的方法
担心创建的虚拟机硬盘容量太大会占用真正的硬盘空间,把硬盘的容量设置得很小,可是等到给虚拟机装好系统后再装其他的软件,才发现硬盘容量不够用了。如果重建虚拟机,还要重新再装一遍操作系统,非常麻烦,而在VMware中又不能直接修改虚拟机的硬盘容量大小,真是麻烦。经过多方请教高人,终于找到了解决之道。 其实在VMware安装目录下就有一个vmware-vdiskmanager.exe程序转载 2011-06-08 13:21:00 · 2762 阅读 · 0 评论 -
Linux下添加静态路由的方法
linux下添加路由的方法:一:使用 route 命令添加使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法://添加到主机的路由# route add –host 192.168.168.110 dev eth0# route add –host 192.168.168.119 gw 192.168.168.1//添加到网络的路由# route add –net IP ne转载 2011-06-11 17:17:00 · 1374 阅读 · 0 评论 -
fedora网络配置的bug
<br /> fedora真实系统安装完成后,还不能够马上上网。如果不使用DHCP就无法上网,通过ifconfig命令也会发现机器的网络掩码不对。其实这是fedora10的Network Manager的一个bug:无论如何设置,默认网关和子网掩码都是一样的!可以通过修改/etc/sysconfig/networking/devices/ifcfg-eth0文件。<br />本来文件中的内容为<br />IPADDR=192.168.x.x<br />NETMASK=192.168原创 2011-04-18 14:26:00 · 1129 阅读 · 0 评论 -
linux下使用无线网卡的命令行方法
<br />(1)首先关闭开发板的有线网卡<br />[root@FriendlyARM /]# ifconfig eth0 down <br />(2)加载USB WiFi无线网卡<br />[root@FriendlyARM /]# ifconfig wlan0 up <br />(3)扫描可用的无线网络<br />[root@FriendlyARM /]# iwlist scanning | grep ESSID <br />lo Interface doesn't support sc原创 2011-06-02 17:18:00 · 20547 阅读 · 2 评论 -
界地址寄存器(界限寄存器)
<br />方法:<br /> 1.在CPU中设置一对下限寄存器和上限寄存器,存放正在执行的程序在主存中的下限和上限地址。<br /> 2.可将一个寄存器作为基址寄存器,另一寄存器作为限长寄存器(指示存储区长度)每当CPU要访问主存,硬件自动将被访问的主存地址与界限寄存器的内容进行比较,以判断是否越界。如果未越界,则按此地址访问主存,否则将产生程序中断——越界中断(存储保护中断)。转载 2011-03-24 21:04:00 · 7310 阅读 · 0 评论 -
linux进程切换和TSS结构
TSS 全称为task state segment,是指在操作系统进程管理的过程中,进程切换时的任务现场信息。 i386体系从硬件上支持任务间的切换。为此目的,它增设了一个新段:任务状态段(TSS),它和数据段、代码段一样也是一种段,记录了任务的状态信息。 与其它段一样,TSS也有描述它的结构:TSS描述符表,它记录了一个TSS的信息,同时还有一个TR寄存器,它指向当前任务的TSS。任务切换的时候,CPU会将原寄存器的内容写出到相应的TSS,同时将新TSS的内容填到寄原创 2010-11-18 11:41:00 · 12102 阅读 · 1 评论 -
linux内核0.11版本进程调度问题
下面简单说一下linux 0.11内核中进程调度的原理。 0.11核中进程的调度主要由四个部分数组成:调度初始化、调度、睡眠、唤醒。 一、调度初始化:sched_init() 我们知道在内核初始化(main)过程中,要将任务0转换到用户态下执行,也就是建立Linux中的第一个用户程序。既然任务0之前是在内核态下执行的,所以用的是系统的ldt、和tss,要在用户态下执行,就要使用用户态下的ldt、tss,那么,调度初始化的其中一个任务就是建立任务0的ldt和gdt转载 2010-11-18 23:03:00 · 4476 阅读 · 0 评论 -
_exit和exit的区别
在linux的标准库函数中,有一套称作高级I/O的函数,我们熟知的printf 、fopen 、fread 、fwrite都在此列,他们也被称作缓冲I/O。其特征是对应每一个打开的文件,都存在一个缓冲区,在内存中都有一片缓冲区,每次读文件会多读若干条记录,这样下次读文件时就可以直接从内存的缓存中取出,每次写文件时也仅仅是写入到内存的缓冲区,等待满足一定的条件(达到一定的数量,或者遇到特定字符,如换行和文件结束符EOF),再将缓冲区的内容一次性的写入文件,这样就大大增加了文件读写的速度,但也为我们编程带来了一转载 2010-11-15 20:44:00 · 8015 阅读 · 1 评论 -
处理机调度级别
<br /><br />从调度所实现的功能来分,处理机调度可分为三级:<br />1、高级调度(作业调度):其主要功能是根据一定的算法,从输入的一批作业中选出若干个作业,分配必要的资源。当作业被新建时,系统会首先执行高级调度,为任务提供就绪条件,并为其建立相应的进程,于是它就被加入到就绪队列中等待执行。<br />2、中级调度(进程挂起与对换):负责管理进程在内外存之间交换的过程。它负责页面置换工作,将一些未来可能很少被用到的数据淘汰出内存,从而解决内存空间紧张的问题。<br /><br />3、低级调度(原创 2011-01-04 23:11:00 · 4813 阅读 · 1 评论 -
进程上下文和中断上下文
进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。 处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;3、用户态,运行于用户空间。 用户空间的应用程序,通过系统调用,进入内核空间。这个时候用转载 2010-12-22 13:52:00 · 833 阅读 · 0 评论 -
Linux命令缩写的解释(转)
bin = BINaries/dev = DEVices/etc = ETCetera (一说:Editable Text Configuration)/lib = LIBrary/proc = PROCesses/sbin = Superuser BINaries/tmp = TeMPorary/usr = Unix Shared Resources/var = VARiable ?FIFO = First In, First OutGRUB = GRand Unified BootloaderIFS =转载 2010-10-29 13:22:00 · 1203 阅读 · 0 评论 -
编写守护进程的方法
1、调用函数fork()创建子进程,然后父进程终止,保留子进程继续运行。之所以要让父进程终止是因为,当一个进程是以前台进程方式由shell启动时,在父进程终止之后子进程自动转为后台进程。另外,我们在下一步要创建一个新的会话期,这就要求创建会话期的进程不是一个进程组的组长进程。当父进程终止,子进程运行,这就保证了进程组的组ID与子进程的进程ID不会相等。或者 使用 setsid 设置为新会话的领头进程,因为 setsid 要求调用进程不是会话的领头进程时才有效。因此, 首先可用 fork 派生, 并结束转载 2010-10-22 14:17:00 · 1227 阅读 · 0 评论 -
VMware下fedora上网配置问题
我的是在windows系统上安装的VMware,又在其上面安装了fedora。我使用的是NAT的方式,首先要将windows上的VMware的虚拟连接设置成自动获得IP地址,然后打开VMware,按下面路径寻找Edit->Virtual Network Editor->DHCP->start,并点击start,再找到NAT选项卡,点击start,然后选择Automatic Bridging选项卡,将Automatically choose an available physical netwo原创 2010-12-08 12:21:00 · 2841 阅读 · 0 评论 -
linux内核之sys_wait4
<br />sys_wait4(pid_t pid,unsigned int * stat_addr, int options, struct rusage * ru)<br /> DECLARE_WAITQUEUE(wait, current);<br /> add_wait_queue(¤t->wait_chldexit,&wait);<br />repeat:<br /> flag = 0;<br /> current->state = TASK_INTER转载 2011-05-11 14:35:00 · 5531 阅读 · 0 评论