
操作系统
文章平均质量分 77
5G砖家
这个作者很懒,什么都没留下…
展开
-
逻辑地址、线性地址和物理地址的关系
逻辑地址、线性地址和物理地址的关系首先不得不提的历史 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时...转载 2021-01-30 00:00:13 · 4156 阅读 · 0 评论 -
LinuxC open()函数
LinuxCopen()函数头文件#include<sys/types.h> /*提供类型pid_t,size_t的定义*/#include<sys/stat.h>#include<fcntl.h>函数原型int open(const char *path, int oflags,mode_t mode);函数说明open建立了一条到文件或设备的访问路径。open函数一般用于打开或者创建文件,在打开或创建文件时可以制定文件的属性及用..原创 2021-01-29 14:20:27 · 1076 阅读 · 0 评论 -
Linux下的ioctl()函数
Linux下的ioctl()函数一、什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。 ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程序提供了对ioctl的支持,用户就可以在用户程序中使用ioctl函数来控制设备的I/O通道。 用户程序所作的只是通过命令码(cmd)告诉驱动程序它想做什么,至于怎么解释这些命令和怎么实现这些命令,这都是驱动程序要做的事情.原创 2021-01-29 11:15:56 · 1086 阅读 · 0 评论 -
内存分页
CPU是通过寻址来访问内存的。32位CPU的寻址宽度是 0~0xFFFFFFFF ,计算后得到的大小是4G,也就是说可支持的物理内存最大是4G。但在实践过程中,碰到了这样的问题,程序需要使用4G内存,而可用物理内存小于4G,导致程序不得不降低内存占用。为了解决此类问题,现代CPU引入了MMU(Memory Management Unit内存管理单元)。MMU 的核心思想是利用虚拟地址替代物理地址,即CPU寻址时使用虚址,由 MMU 负责将虚址映射为物理地址。MMU的引入,解决了对物理内存的限..原创 2021-01-28 20:12:02 · 2995 阅读 · 0 评论 -
getpagesize()函数
getpagesize()头文件:#include <unistd.h>定义函数:size_t getpagesize(void);函数说明:返回一分页的大小,单位为字节(byte)。此为系统的分页大小,不一定会和硬件分页大小相同。返回值:内存分页大小。附加说明:在 Intel x86 上其返回值应为4096bytes。范例#include <unistd.h> main(){ printf("page size = %d\n", getpagesize(.原创 2021-01-28 19:41:00 · 2214 阅读 · 0 评论 -
lseek函数的用法
lseek函数的用法所有打开的文件都有一个当前文件偏移量(current file offset),以下简称为 cfo。cfo 通常是一个非负整数,用于表明文件开始处到文件当前位置的字节数。读写操作通常开始于 cfo,并且使 cfo 增大,增量为读写的字节数。文件被打开时,cfo 会被初始化为 0,除非使用了O_APPEND。 使用 lseek 函数可以改变文件的 cfo 。 #include<unistd.h> #include <s...原创 2021-01-28 16:34:51 · 1404 阅读 · 1 评论 -
shmget函数
shmgetint shmget(key_t key, size_t size, int flag);key: 标识符的规则size:共享存储段的字节数flag:读写的权限返回值:成功返回共享存储的id,失败返回-1key_t key----------------------------------------------- key标识共享内存的键值:0/IPC_PRIVATE。 当key的取值为IPC_PRIVATE,则函数shmget()将创建一块...转载 2021-01-28 14:29:16 · 2978 阅读 · 1 评论 -
ftok
ftok消息队列、信号灯、共享内存常用在Linux服务端编程的进程间通信环境中。而此三类编程函数在实际项目中都是用System V IPC函数实现的。System V IPC函数名称和说明如下表15-1所示。表15-1 System V IPC函数 消息队列 信号灯 共享内存区 头文件 <sys/msg.h> <sys/sem.h>.转载 2021-01-28 14:00:07 · 412 阅读 · 0 评论 -
snprintf 函数用法详解
snprintf 函数用法详解数原型为intsnprintf(char *str, size_t size, const char *format, ...)两点注意:(1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0');(2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0'),返回值为欲写入的字符串长度。使用snprint.转载 2021-01-28 11:26:17 · 1935 阅读 · 0 评论 -
mmap()/munma()函数
C语言中mmap()函数的使用mmap()函数的主要用途有三个:1、将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能;2、将特殊文件进行匿名内存映射,可以为关联进程提供共享内存空间;3、为无关联的进程提供共享内存空间,一般也是将一个普通文件映射到内存中。头文件: #include <sys/mman.h>原型:void *mmap(void *start,size_t length,int prot,i原创 2021-01-28 10:16:47 · 354 阅读 · 0 评论 -
对局部性原理的一点点理解
书本概念:局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。三种不同类型的局部性:时间局部性(Temporal Locality):如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。程序循环、堆栈等是产生时间局部性的原因。空间局部性(Spatial Locality):在最近的将来将用到的信息很可能与现在正在使原创 2017-02-14 21:40:24 · 1738 阅读 · 0 评论