操作系统
ZeroCBoy
世上不缺武林秘籍,缺的是一颗潜心修炼的心。
展开
-
调用函数时栈的活动情况
//假设在一个32位little endian的机器上运行下面的程序,结果是多少?#include int main(){ long long a=1,b=2,c=3; printf("%d %d %d\n",a,b,c); return 0;}注: a.printf()是一个库函数,C和C++中函数的参数是从右往左入栈的。b.栈的生长方向是从高往低的。原创 2016-06-07 09:00:48 · 506 阅读 · 0 评论 -
用户态切换到内核态的3种方式
1.系统调用2.异常3.外围设备的中断原创 2016-06-08 15:36:38 · 3081 阅读 · 0 评论 -
关于fork函数
//请问下面的程序一共输出多少个“-”?8个。int main(){ int i; for(i = 0;i<2;i++) { fork(); printf("-"); } return 0;}//一共调用了6次printf,但是会输出8个-。因为父进程的输出缓冲也会被子进程复制。//因为标准输出是行缓冲,程序遇到"\n"、EOF、文件描述符关闭、主动flush或程序退出原创 2016-06-08 22:57:31 · 640 阅读 · 0 评论 -
text data bss heap stack
1.text:已编译程序的机器代码。2.data:已初始化的全局C变量。3.bss:未初始化的全局C变量。在目标文件中这个节不占据实际的空间,它仅仅是一个占位符。目标文件格式区分初始化和未初始化变量是为了空间效率:在目标文件中,未初始化变量不需要占据任何实际的磁盘空间。4.heap:5.stack:原创 2016-06-04 16:14:31 · 798 阅读 · 0 评论 -
线程
一组并发线程运行在一个进程的上下文中。每个线程都有它自己独立的线程上下文,包括线程ID、栈、栈指针、程序计数器、条件码和通用目的寄存器值。每个线程和其他线程一起共享进程上下文的剩余部分。这包括整个用户虚拟地址空间,它是由只读文本(代码)、读/写数据、堆以及所有的共享库代码和数据区域组成的。线程也共享同样的打开文件的集合。在多线程中不加限制的随意访问非static局部变量不会导致运算结果原创 2016-06-13 12:28:14 · 706 阅读 · 0 评论