- 博客(13)
- 问答 (1)
- 收藏
- 关注
原创 立博宣言
作为一个苦逼机械男,大学三年,碌碌无为,现在走上了学编程的道路,开通这个博客来记录我的学习与生活,也督促自己的学习,欢迎大家给与评论,大家共同进步
2015-07-24 18:00:09 415
原创 信号
信号提供了一种处理异步事件的方法,信号的产生有以下几个方式: 1.用户按某些终端时,引发终端产生信号。 2.硬件产生信号,除数为0,无效的内存引用等。 3,进程调用kill函数将任意信号发送给另一个进程或进程组。 4.当检测到某种软件条件以发生时,应通知有关进程也产生信号。 信号的处理有以下几个方式: 1.忽略此信号 2,捕捉信号,调用用户函数 3.执行系统默认动作。 因为捕捉信号时调
2015-08-10 07:48:42 304
原创 进程的关系
我们现在可以通过两种方式进行计算机的登陆,其一是终端登陆,其二是网络登陆。系统启动时,会先创建进程为1的init进程,此进程读取/etc/ttys,并调用一次fork,产生getty进程,打开终端设备,显示信息。当键入用户名之后,getty调用login程序,login通过getpwnam取得相应口令文件登陆项,再将用户的口令加密比较,若符合,则登陆成功。同时login初始化环境。调用组ID,调用s
2015-08-04 07:54:02 415
原创 计算机的储存架构
计算机存在多个层次的储存结构,现代计算机的储存结构主要有寄存器,高速缓存,内存,磁盘。数据传输速度由前到后传容量输速度增加,但存储容量变小,每单位字节的花费也更高。因为处理器处理的速度与磁盘储存数据速度的差距在拉大,所以需要增加这些以提高数据传输的速度。其中RAM分为DRAM 与SRAM,SRAM速度较快,用作高速缓存,DRAM速度较慢,且状态易受电压波动等环境因素的干扰,需要定时刷新,用作主存。现
2015-08-03 07:31:38 680
原创 进程的调用
每个进程都有一个非负整数的唯一ID,用pid_t结构表示其ID,其中ID为0的是调度进程,常被称为交换进程。是内核的一部分为系统进程,ID为1的是init进程,他是一个普通用户进程,但用root权限运行。我们可以调用fork函数来分支产生子进程,子进程是父进程的副本,得到其数据空间,推和栈的副本。子进程会用dup函数复制父进程表项,从而实现文件共享,两进程维护同一张文件表项,返回给父进程的是子进程的
2015-08-02 07:55:25 785
原创 进程的环境
当执行C语言程序时,在到main函数之前,会先调用一个特殊的启动历程,可执行文件会先跳到启动历程的地址,从内核中调用参数与环境,为调用main函数做好准备。exit,与_EXIT,_exit函数可用于退出函数,其都返回终止状态,atexit函数可登记错误处理函数,main函数调用完后,登记的函数可以执行,且是按登记的顺序倒序执行,同一个函数被调用多次就执行多次。 内核使程序执行的唯一方法为调用一个
2015-08-01 08:12:51 341
原创 标准I/O库
相较于系统调用的I/O函数,标准库I/O函数相较于系统调用提供了缓冲区的分配以及以优化长度的块执行I/O等,当我们用标准I/O函数打开或创建一个文件时,就将一个流与文件相关联起来,流的定向决定了所读写的流是单字节或双字节的。 打开流的函数有fopen,freopen,fdopen,他们返回指向FILE对象的指针,对象通常是一个结构,其包含了管理该流所需的所有信息,包括实际I/O的文件描述符,指向该
2015-07-30 08:18:55 327
原创 文件与目录
文件有多种文件类型,其中包括 1:常规文件,这种文件包含了某种形式的数据。 2:目录文件,其包含了其他文件的名字以及指向这些文件相关信息的指针。 3:块特殊文件,提供对设备带缓冲的访问,每次访问以固定长度为单位进行 4:字符特殊文件,提供对设备不带缓冲的访问,可以按可变长度为单位进行。 5:FIFO,用于进程间通信。 6:套接字,用于进程间网络通信。 7:符号链接,这种类型文件指向另一
2015-07-29 08:00:25 319
原创 处理器对程序性能的影响
处理器可以进行指令级的并行,及多条指令同时进行运算,且是乱序的,即指令执行的顺序不一定与机器代码的顺序一致。主要由指令控制单元与执行单元构成,前者是对指令进行译码,并将指令传到执行单元与按顺序通过队列传到退役单元,在执行单元,指令的运算式乱序的,可同时处理大量指令,但不同数据间的数据相关限制了执行顺序,这种限制形成了关键路径。我们可以根据这个特征来提高程序的表现。 循环展开,可以在每次循环中,增加
2015-07-28 08:33:49 886
原创 文件I/O
UNix系统中大多数文件I/O只需用到不带缓冲的I/O,他们是POSIX以及SUS中的一部分,包括read,write,creat,close,dup等。 其中open函数有两种形式: int open(const char *path,int oflag,...); int openat(int fd,const char *path,int flag,...);这两个函数均
2015-07-28 07:47:55 322
原创 UNIX的标准与选项
unix是有多种版本种类的系统,为了增加系统间的可移植性,许多机构提出了不同的Unix标准来为应用提供统一的接口。其中有三个标准,ISO C,POSIX以及SUS规范,其中SUS是POSIX的超集,其定义了一些附加接口来提高POSIX的规范。当今主流的的UNIX操作系统和类UNIX操作系统有LINUX,MAC,BSD,SOLARIES这些。系统限制是系统为了实现可移植性而提出的。主要有三项:
2015-07-27 07:58:29 405
原创 对于程序性能优化的理解
众所周知,C语言是编译型语言,而一般使用的GCC对程序的编译是在保证不会产生歧义的情况下对程序进行优化的,GCC编译器也可以设置其的优化程度,但更高的优化级别会使程序规模增加,不易用标准的调试工具进行调试。一般采用的优化级别为 -02,所以说这需要程序员优化自己的代码,以提高程序的表现。 其中书中举了几个例子来说明编译器无法优化的情况,第一个为储蓄名别名使用,即一个指针对另个指针进行赋值时,编译器
2015-07-26 07:51:17 1048
原创 《深入理解计算机系统》1-4章总结
经过1个月断断续续的学习,已学习完《深入理解计算机系统》第四章,不得不说这本书确实无愧经典之名,能带给自己更深层次对编程的理解,现总结下现阶段的学习与体会: 第一章主要为后面个章节做了铺垫,其中讲述了一个C语言程序是如何转变为机器可以理解的语言,即可执行的目标代码,其过程如下 在系统的硬件组成中,计算机通过总线传递数据,要Cpu处理在磁盘的数据必须先将数据保存到RAM中,再
2015-07-25 09:51:51 5061 1
空空如也
apue第10章的题,关于使进程可以设置任意数量的定时器的问题
2015-08-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人