- 博客(188)
- 资源 (3)
- 收藏
- 关注
转载 同一进程中的线程究竟共享哪些资源
线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这许多共性的同时,还拥有自己的个性。有了这些个性,线程才能实现并发性。这些个性包括:1.线程ID每个线程都有自己的线程ID,这个ID在本进程中是唯一的。进程用此来标识线程。2.寄存器组的值
2015-10-26 20:44:14
915
转载 编写最简单的内核:HelloWorld
原文出处: Arjun Sreedharan 译文出处:NOALGO博客 欢迎分享原创到伯乐头条内核是操作系统最核心的内容,主要提供硬件抽象层、磁盘及文件系统控制、多任务等功能,由于其涉及非常广泛的计算机知识,很少被人们所熟悉,因而披上了一层神秘的面纱。本文将从零开始实现一个最简单的内核,其可以通过x86系统的GRUB引导启动,并向屏幕输出“Hello World!
2015-10-26 20:16:07
1165
转载 How to Design a Good API and Why it Matters
http://wenku.baidu.com/link?url=DNX_g0Q2q3oWM5PaAZUjUVQU09CigFjf9Qr87d1ZY2RhoEwNoUbzQ0OOYfgvlUFGBq_H0VRHBWcbW7ikzsPSTWwfZolFKXBMeIngv3Rv_SqCharacteristics of a Good API• Easy to learn• E
2015-01-31 20:54:54
727
转载 Linux监控命令全覆盖
http://blog.jobbole.com/81173/1.1 top1.1.1 命令说明Top 命令能够实时监控系统的运行状态,并且可以按照cpu、内存和执行时间进行排序 1.1.2 参数说明命令行启动参数:用法: top -hv | -bcisSHM -d delay -n iterations [-u user | -U user]
2015-01-25 18:58:11
726
转载 7个示例科普CPU Cache
原文:http://coolshell.cn/page/8(感谢网友 @我的上铺叫路遥 翻译投稿)CPU cache一直是理解计算机体系架构的重要知识点,也是并发编程设计中的技术难点,而且相关参考资料如同过江之鲫,浩瀚繁星,阅之如临深渊,味同嚼蜡,三言两语难以入门。正好网上有人推荐了微软大牛Igor Ostrovsky一篇博文《漫游处理器缓存效应》,文章不仅仅用7个最简单的源码
2014-11-30 22:16:44
493
转载 linux虚拟进程地址映射机制
原帖:http://www.eefocus.com/article/09-06/75169s.html1、每个进程都有4G虚拟内存,但大多数进程用不到那么多内存,甚至只会用其中很小的一部分。当进程真的要用内存时,操作系统让将那一段虚拟地址空间与一块物理内存关联起来。所以进程的4G虚拟内存中只有一小部分后面有物理内存支撑着,访问其它虚拟地址空间部分就会出错(段错误)。实际上,大多数操作系
2014-11-29 21:52:27
984
转载 MMU和cache学习
原帖:http://blog.youkuaiyun.com/chinesedragon2010/article/details/59223241. MMUMMU:memory management unit,称为内存管理单元,或者是存储器管理单元,MMU是硬件设备,它被保存在主存(main memory)的两级页表控制,并且是由协处理器CP15的寄存器1的M位来决定是enabled还是d
2014-11-29 21:32:34
472
转载 虚拟内存,MMU/TLB,PAGE,Cache
原帖:http://hi.baidu.com/gilbertjuly/item/6690ba0dfdf57adfdde5b040虚拟地址VA到物理地址PA以页page为单位。通常page的大小为4K。物理页面称为page frame。查看应用程序进程的地址空间,可以看到分为很多段,比如代码段(只读)、数据段(读写)、堆、共享库(其中进一步分段)、栈空间等。整个应用程序的
2014-11-29 21:12:25
1226
转载 重装xp找回ubuntu
很多朋友在安装 ubuntu 之后因为种种原因需要重新安装 xp ,这样就会将硬盘的 mbr (主引导扇区)覆盖,导致 ubuntu 无法启动,网上对于这种情况提供了很多解决办法,但是有些复杂。经过参考网上的一些资料,以及自己的实践,提供给大家两种最简便的方法:准备:下载 grub4dos 文件,http://download.gna.org/grub4dos/ 将 grldr 、 g
2014-11-25 22:43:32
423
转载 xp下安装ubuntu.
一、下载Ubuntu11.10系统镜像文件,放在C盘。 二、将硬盘最后一个分区空出部分空间,使那些空间属于未分配状态(自己的是500G硬盘,留了50个G)。 三、下载Grub4Dos(下载地址:http://download.youkuaiyun.com/detail/maylian7700/4275799),解压grldr和menu.lst两个文件至XP的C盘根目录下,然后修改menu.l
2014-11-25 22:42:40
526
转载 使用virtualenv创建虚拟python环境
1, 安装virtualenvsudo apt-get install python-virtualenv或者 sudo pip install virtualenv2,建立一个测试目录mkdir venvcd venv然后创建一个虚拟环境:virtualenv env1cd切换到env1目录下,执行命令:source bin/activate你会发现在shel
2014-11-25 22:40:16
471
转载 ubuntu增加国内源
1、修改源地址:cp /etc/apt/sources.list /etc/apt/sources.list.bakvim /etc/apt/sources.list2、在文件末尾增加网易源:## neteasedeb http://mirrors.163.com/ubuntu/ precise-updates main restricteddeb-src
2014-11-25 22:38:43
649
转载 uboot启动代码
u-boot-2014.07.tarDirectory Hierarchy:====================/arch Architecture specific files /arc Files generic to ARC architecture /cpu CPU specific files /arc700 Files specif
2014-11-22 22:29:43
768
转载 UBOOT启动过程zz
http://www.cnblogs.com/andrew-wang/archive/2012/12/06/2806238.html
2014-11-22 22:16:38
487
转载 initrd
解开一个cpio initrd: > mkdir work > cp /boot/initrd.img ./initrd.img.gz > gunzip -c initrd.img.gz > cpio -i --make-directories 制作一个cpio initrd > find . | cpio -c -o > ../initrd.img > gzip
2014-11-06 21:27:32
432
转载 软件开发2:代码检视
看见了if,就想else;看见malloc,就去找free;函数调用要小心,需要看看返回值;看见for循环,就找边界值;看见return要注意,要去前面找资源;看见数组把神提,问题往往在下标;不要小看字符串,长度是个大问题;得到函数不要急,看看变量初始化,各种路径要小心;赋值函数最危险,变量没有初始化。
2014-11-05 22:51:33
1420
转载 用字符设备实现一个pipe
/****************************************************************************** *Name: memdev.c *Desc: 字符设备驱动程序的框架结构*Parameter: *Return: *Author: derek *Date: 2013-6-4 ************************
2014-11-01 15:54:29
676
转载 linux inode理解
http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即
2014-09-28 21:42:06
388
转载 字符设备框架(ioctrl)
1、driver#include #include #include #include #include #include #include #include #include #include //module_param(mem_major, int, S_IRUGO); #define MEMDEV_MAJOR 260
2014-09-14 17:34:55
649
转载 内核线程、用户线程、LWP
http://www.cnitblog.com/tarius.wu/articles/2277.html在现代操作系统中,进程支持多线程。进程是资源管理的最小单元;而线程是程序执行的最小单元。一个进程的组成实体可以分为两大部分:线程集合资源集。进程中的线程是动态的对象;代表了进程指令的执行。资源,包括地址空间、打开的文件、用户信息等等,由进程内的线程共享。线程有自己的私有数据:
2014-09-01 22:05:14
2015
转载 Linux 线程模型的比较:LinuxThreads 和 NPTL
当 Linux 最初开发时,在内核中并不能真正支持线程。但是它的确可以通过 clone() 系统调用将进程作为可调度的实体。这个调用创建了调用进程(calling process)的一个拷贝,这个拷贝与调用进程共享相同的地址空间。LinuxThreads 项目使用这个调用来完全在用户空间模拟对线程的支持。不幸的是,这种方法有一些缺点,尤其是在信号处理、调度和进程间同步原语方面都存在问题。另外,
2014-09-01 21:34:15
555
转载 insmod和modprobe
1,insmodinsmod 是靠一个在kernel/module.c里定义的系统调用来实现的。1. 此系统调用(sys_init_module )分配内核存储空间(kernel memory)给相关的模块,这个内存分配动作是由vmalloc完成;2. 然后将该模块内容拷贝到这块存储空间里;3. 接着声明内核引用该模块;4. 呼叫该模块的初始化涵数这样,
2014-09-01 21:18:14
659
转载 glibc和eglibc
GNU C 库(GNU C Library,又称为glibc)是一种按照LGPL许可协议发布的,公开源代码的,免费的,方便从网络下载的C的编译程序。GNU C运行期库,是一种C函数库,是程序运行时使用到的一些API集合,它们一般是已预先编译好,以二进制代码形式存在Linux类系统中,GNU C运行期库通常作为GNU C编译程序的一个部分发布。Glibc最初是自由软件基金会为其GNU操作系统所写
2014-08-24 21:27:13
1754
转载 系统调用的解释
1,系统调用只是进程状态发生切换,并没有进程之间的切换,当调用系统调用时,只是一个进程从用户太到内核态的转换,而且还是要保存进程在用户态的各个寄存器的值,因为从内核态返回的时候不能保证能返回到这个进程中.从用户态传递参数到系统调用在x86中是通过寄存器传递的.2,每个进程都有两个栈:用户态的栈和核心态的栈。在什么态下运行,就用相应的栈3,
2014-08-23 16:27:30
2005
转载 linux的中断2: 线程模式
1、注册中断1)static inline int __must_checkrequest_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev){return request_threaded_irq(irq, handler, NULL,
2014-06-14 23:35:43
971
转载 linux的中断1
本帖最后由 Godbach 于 2011-07-19 09:59 编辑本文描述内容针对2.6.31+x86平台,不包含硬件相关的细节。作者:独孤九贱;版权所有,转载请注明出处。有问题欢迎与我交流讨论。一、概述中断,本质上是一个电信号,早期的计算的并没有中断这一概念,这使得CPU与外围设备的交互变得困难,CPU需要不
2014-06-14 22:56:04
578
转载 linux在用户态的定时器
1、alarmunsigned int alarm(unsigned int seconds)函数说明: alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。void sigalrm_fn(int sig){ printf("alarm!\n");
2014-06-13 23:22:59
2391
原创 linux的系统调用
/* 0 */ CALL(sys_restart_syscall) // CALL(sys_exit) CALL(sys_fork) CALL(sys_read) CALL(sys_write) /* 5 */ CALL(sys_open) CALL(sys_c
2014-06-07 23:08:53
641
High-Performance Packet Switching Architectures
2013-01-27
Broadband Packet Switching Technologies.pdf
2013-01-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人