8964CN

设置背景图片

[学习笔记]达内纪录片day25 更新进程映像与编写自己的shell

[学习笔记]达内纪录片day25 更新进程映像与编写自己的shell
一、更新进程的映像 子进程通过复制父进程的资源创建的 子进程继承了父进程的PCB。 fd  image  环境变量 子进程和父进程的image完全相同。 在进程中改变进程的映像  使用新的可执行文件布局进程的3G地址空间。 使用exec(3)家族的函数,可以更新进程的映像 fork会分配新的4G地...

[学习笔记]linux-----页、页表、页框(块)

[学习笔记]linux-----页、页表、页框(块)
我们知道,在linux操作系统中,CPU在执行一个进程的时候,都会访问内存。  但CPU并不是直接访问物理内存地址,而是通过虚拟地址空间来间接的访问物理内存地址。  所谓的虚拟地址空间,是操作系统为每一个正在执行的进程分配的一个逻辑地址,在32位机上,其范围从0 ~ 4G-1。操作系统通过将虚拟地址空间和物理内存地址之间建立映射关系,让C...

[学习笔记]达内纪录片day23 文件的映射和元数据

[学习笔记]达内纪录片day23 文件的映射和元数据
一、内存映射系统调用 mmap mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的虚拟地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调...

 [学习笔记]达内纪录片day21 linux内存管理

 [学习笔记]达内纪录片day21 linux内存管理
一、内存管理 从底层硬件到上层应用,各层都提供了各自的内存管理接口 对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。 操心系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核,保证内核...

[学习笔记]达内纪录片day20 动态加载与错误处理

[学习笔记]达内纪录片day20 动态加载与错误处理
一、动态加载 在程序运行的过程中,需要使用到动态库里的函数的时候,将动态库加载到内存中。 程序员向系统提出申请 动态链接器本身就是一个软件 动态向外提供了接口。dlopen API 这种加载就是动态加载 在程序中动态加载共享库需要调用一组特殊的函数,它们被声明于<dlfcn.h>,编译使用该库的时候需要加上-ldl参数 加载共享库...

[学习笔记]达内纪录片day19 大型项目的构建

[学习笔记]达内纪录片day19 大型项目的构建
一、 大型应用项目的构建 一个大型项目,通常需要需要一个团队协同开发,多人不可能写一份代码,而是要模块化开发,每个人开发一个模块,分别实现一些功能,最后组装起来。 C语言提供了头文件的方式进行模块化开发。 多个源文件是如何链接生成可执行文件的   链接的时候做了什么? ...

[学习笔记]达内纪录片day18 初识UNIX C

[学习笔记]达内纪录片day18 初识UNIX C
这一阶段的老师很有意思,讲课的时候比较随性,完全不按照PPT讲,想到什么就讲什么,本人很喜欢这种风格。 一、什么是UC UNIX/C    UNIX是一款计算机操作系统 C   就是C语言   C的语法和标准库函数 二、 操作系统 ...

[学习笔记]达内纪录片day17 最简单的算法

[学习笔记]达内纪录片day17 最简单的算法
讲道理,达内的算法和数据结构实在是。。。算法就讲了最简单的,而且只讲了不到1天,实在是无话可说。 这么点时间,根本不够设计算法的,我们要做的,只是看一下算法,理解设计思想即可。 这种算法也不要你去做,做了效率也不如人家高,搞算法的是计算机科学家,而我们普通的码农,普通程序员是不需要去设计的,只需要理解思想,能去运用即可 一、排序算...