c++虚函数实现原理
下图中,我们在子类中覆盖了父类的f()函数:
1、在后台运行
为了避免挂起终端退出,在进程中调用fork,然后使父进程退出,变成孤儿进程后在后台运行,此时子进程由init进程收养
123 if(pid=fork())exit(0);//是父进程,结束父进程,子进程继续>
内存可以分为以下几段:
- 文本段:包含实际要执行的代码(机器指令)和常量。它通常是共享的,多个实例之间共享文本段。文本段是不可修改的。
- 初始化数据段:包含程序已经初始化的全局变量,.data。
- 未初始化数据段:包含程序未初始化的全局变量,.bbs。该段中的变量在执行之前初始化为0或NULL。
- 栈:由系统管理,由高地址向低地址扩展。
- 堆:动态内存,由用户管理。通过malloc/alloc/realloc、new/new[]申请空间,通过free、delete/delete[]释放所申请的空间。由低地址想高地址扩展。
1、共享内存的实现采用了内存映射技术
2、共享内存主要集中3个内核函数,do_shmat、sys_shmat、sys_shmdt
3、sys_shmat调用do_shmat实现内存共享的attach
4、sys_shmdt实现内存共享的detach和destroy,首先查找相应的vma,如果找到执行ummap操作
1、每个进程有一个独立的4G内存空间,每个进程内存空间都具有类似的结构
2、每当一个新进程建立时,会建立一个自己的内存空间,将进程的数据,代码从磁盘拷贝到改内存空间,这些信息会记录在task_struct链表中。
3、每个进程对应的空间都和磁盘的空间是映射的。
|
|
监控TCP/IP网络非常有用的工具,查看路由表、网络连接和端口状态等信息
|
|
对网络上的数据包进行截获的包分析工具
我们理解您需要更便捷更高效的工具记录思想,整理笔记、知识,并将其中承载的价值传播给他人,Cmd Markdown 是我们给出的答案 —— 我们为记录思想和分享知识提供更专业的工具。 您可以使用 Cmd Markdown:
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.