- 博客(13)
- 收藏
- 关注
转载 关于计算机系统的死锁
<br />计算机系统产生死锁的根本原因是资源有限且操作不当。 一种原因是系统提供的资源太少了,远不能满足并发进程对资源的需求。这种竞争资源引起的死锁是我们要讨论的核心。另一种原因是由于进程推进顺序的不合适引发的死锁。 产生死锁的四个必要条件: 1、互斥条件:在一段时间内,一个资源只能由一个进程独占使用,若别的进程也要求该资源,则须等待直至其占用者释放; 2.不可抢占条件:进程所获得的资源在未使用完毕之前,资源申请者不能强行从资源占有者手中夺取资源,而只能有该资源的占有者自行释放;<b
2011-04-18 08:34:00 1819
转载 用 GDB 调试程序
<br /><br />GDB 概述<br />————<br />GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像 VC 、 BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有比 VC 、 BCB 的图形化调试器更强大的功能。所谓 “ 寸有所长,尺有所短 ” 就是这个道理。<br />一般来说, GDB 主要帮忙你完成下面四个方面的功能:<br /> 1 、启动你的程序,可以按照你的自定
2011-04-14 17:11:00 985
转载 vim脚本配置
<br />俗话说的好工欲善其事 必先利其器,今天就跟大家分享下我的vi的脚本配置。<br />我用的是f8,配置文件为/etc/vimrc,或者~/.vimrc。<br />我所是说的配置是在F8基础纸上增加的配置。<br /> set autoindent 自动缩进功能,不用每次换行不用动手对齐<br /> set smartindent 智能对齐,对于写c/c++很好<br /> set tabstop=4<br />
2011-04-14 16:43:00 1563
转载 经典vim插件功能说明、安装方法和使用方法介绍
<br />1 #=============================================================================<br /> 2 转载请注明出处: http://blog.csdn.net/tge7618291<br /> 8 #=============================================================================<br /> 9 1. 查看 key 相关信息说明的命令
2011-04-14 16:31:00 1633
转载 windows和linux汇编语言的比较
<br /><br />最近看的一些资料里面发现那些汇编语句和我以前学的不太一样,今天上网一搜,晕。原来linux和windows下的汇编语法都<br />不尽相同。这才想起来,以前学的是x8086/88中的汇编指令,是windows的专属环境下的。故转载一篇文章记录下相关内容:<br />文章来自:http://blog.sina.com.cn/s/blog_445bdc5a0100fc8q.html<br />gcc采用的是AT&T的汇编格式,MS采用Intel的格式. <br /> <br />
2011-04-13 20:44:00 556
转载 Linux操作系统下后台执行程序
在Linux下,后台执行跟windows就有写区别了,因为,我们后台执行的程式主要是通过php.exe文件通过system来实现的,但在linux下,没有php.exe文件,但是在"/usr/bin/php“实际上就是windows里的php.exe。 所以,我们后台执行的程式可以这样修改,实用于linux和windows: $now_os = PHP_OS; if ($now_os == 'Linux'){// this is for Fedora 8 $p = "/usr/bin/p
2011-03-25 21:59:00 465
转载 关于Linux操作系统内核中的指针和错误值
在内核的代码和驱动程序中经常见到ERR_PTR, IS_ERR, PTR_ERR这三个内联函数。 许多的内核函数需要返回一个指针,但是函数的调用可能失败,一般我们处理这样的情形都是返回一个NULL指针,就像malloc或kmalloc在没有获得指定的空间申请时的返回值一样。但是有时我们想知道导致函数失败的原因,但是返回NULL就显得信息不够。因此有些函数返回一个实际的错误编码以便对引起错误的原因做一些处理。很多内核接口通过把错误值编码到一个指针值中来返回错误信息。当处理这样的函数时,判断是否成功调用
2011-03-25 21:58:00 404
转载 Linux系统进程的几个用户ID及其转换方法
Linux为每个进程设置了3个ID:实际用户id,有效和用户id和保存的设置id。 关于这3个id,需要注意以下几个方面: 1.只有root才能改变进程的实际用户id。例如,用户从终端login程序登陆,此时login程序的3个id都是root。然后正确输入用户名密码之后,login程序于是setuid到注册的id。于是3个id都被改成了注册的用户id。然后exec shell程序。非root用户注册进入shell之后,他的实际用户id是绝对不会被更改的。除非logout之后,重新注册shell
2011-03-25 21:56:00 627
转载 Linux系统下内存申请应用的方法原理总结
1. 地址空间的管理 物理地址都是有内核管理的, node-->zone-->mem_map-->page, 所有的物理页面都在mem_map数组中的页帧对应, 然后不同的page有分为DMA,normal,highmem三个zone。 内核线性地址空间, 实际上只是低端内存才有线性地址,0---896MB部分。 内核虚拟地址, 低端内存的虚拟地址与线性地址是一样的。 高端内存只有在映射了以后才有虚拟地址 用户空间地址, tast_struct ---> mmap --> mm_stru
2011-03-25 21:54:00 540
转载 应用程序在Linux上的执行过程
执行文件是如何在shell中被"执行"的。本文中尽可能少用一些源码,免得太过于无聊,主要讲清这个过程,感兴趣的同学可以去查看相应的源码了解更多的信息。 1.父进程的行为: 复制,等待 执行应用程序的方式有很多,从shell中执行是一种常见的情况。交互式shell是一个进程(所有的进程都由pid号为1的init进程fork得到,关于这个话题涉及到Linux启动和初始化,以及idle进程等,有空再说),当在用户在shell中敲入./test执行程序时,shell先fork()出一个子进程(这也是很多
2011-03-25 21:52:00 507
转载 堆和栈的区别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的
2011-03-25 05:29:00 561
转载 CAN、I2C、SPI、PCI总线简介
CAN、I2C、SPI、PCI总线简介一、SPI总线说明串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。SPI 用于CPU与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输
2011-03-21 00:02:00 7552
转载 宏的一些副作用
1、优先级问题 1) 传入变量优先级 #define MULTI(a,b) a * b MULTI(1+2,3) => 1 + 2 * 3 其实是想要(1 + 2) * 3 2) 作为值返回时,类似1) #define ADD(a,b) (a) + (b) int c = ADD(a,b) * 3; => (a) + (b) * 3 其实是想要(a + b) * 3 所以,一般的规则是:宏里面参数全部用括号括起来;如果作为值返回,整个表达式也用括号括起来 。 所以,上面最好这么写:
2011-02-16 16:47:00 578
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人