自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (10)
  • 收藏
  • 关注

原创 apue学习第二十天——守护进程(第十三章)

Daemon!Here arrived!我们之前对其概念已经很熟悉了,这里我们快速通过,本篇可能是最短的一篇。因为不打算细说,并且第十三章的内容本来也很少。分两块,守护进程的结构,以及如何编写守护进程程序。1. 守护进程的特征我们知道,daemon process常常在系统bootstrap时启动,系统terminate时终止。那废话不多说,直接来看一下一些系统守护进程

2015-01-31 19:07:07 823

原创 apue学习第十九天(2)——线程与信号

我们在线程基础中说过,每个线程都有自己的signal mask(信号屏蔽字),也就是单个线程可以筛选某些信号。thread中的信号处理very similar to 进程中的信号处理,比如:(1)pthread_sigmask vs sigprocmask不过需要注意的是,pthread_sigmask失败时直接返回错误码;而sigprocmask失败时设置errno并返回-1;(

2015-01-31 14:25:26 804

原创 apue学习第十九天(1)——可重入与线程安全(第十二章)

第十二章中的线程属性和同步属性已分在前几篇中说明,本篇继续说第十二章中后面的内容。首先,reentrancy,可重入的概念【wikipedia:reentrancy】:In computing, a computer program or subroutine is called reentrant if it can be interrupted in the middle of

2015-01-30 15:08:05 830

原创 apue学习第十八天——从哲学家就餐问题看死锁

搞了几天坑爹的论文整理和专利,这下终于都搞完了,可以继续好好看书啦!前几天看了线程基础以及5种基本的同步机制。那好,对于死锁这个快听腻了的词,先实现一个哲学家问题上的死锁,然后看怎样去解决它。问题描述:也就是一个桌上围五个人,每个人左右手边各有一根筷子(不用管原著中的刀叉啦),先各思考一会(假设思考rand()%10时间吧),然后先拿左手筷子,再拿右手筷子;吃饭(假设吃rand()

2015-01-28 19:23:51 1724

原创 apue学习第十七天(2)——线程同步

Thread Sychronization,线程同步,我们先来看一个场景,两个或多个进程同时修改一个变量,如图:线程A,B同时进行增量操作。通常,读操作可以一步完成,而写操作(增量操作)可分解为3步:(1)从内存单元读入寄存器(2)将寄存器中变量进行增量操作(3)将新值写回内存单元;由上述步骤分析,最后i的值可能+1,也可能+2。刚才说的这种情况是计算机体系结构引起的竞争,主要是m

2015-01-23 22:02:32 1216

原创 apue学习第十七天(1)——线程基础(第十一章)

这名义上是第十七天,但线程(第11章)和线程控制(第12章)这两章我着实看了一周,当然,收获也不小。说实话,线程对学过操作系统的菜鸟们来说再熟悉不过,进程与线程的概念区别可以说得头头是道,但是我相信大多数人和我一样,对实现细节只能感叹一声:呵呵。好啦,话不多说,先看线程基础。我们深入的向process内部探究,就可以看到thread,thread是系统调度的最小单位。一个进程里面有

2015-01-23 16:58:12 1045

原创 apue学习第十六天——信号(第十章)

好吧,信号这一章,我承认看到一半看不下去了。开始讲kill, raise, alarm还有耐心看一点,后面的sigprocmask, sigaction, sigsetjmp可是真没耐心啦。我倒是认为,这些函数光看不练的话,一毛钱用都没有,再说,我写博客的目的是把逻辑关系理清楚,又不是去罗列知识点。嘿嘿,所以我还是只看下函数作用吧。(持续自我安慰中。。。)OK,那现在开始信号。第一句话

2015-01-15 15:51:21 1099 1

原创 apue学习第十五天——进程关系(第九章)

天呐,我有几天没写了啊?!这几天忙着专利第二稿的改写和论文的调研,已经无暇顾及我心爱的apue了。那今天,把第九章搞定吧!内容很简单~第九章名称叫进程关系,也都是写理论和概念上的东西,讲了下面几个方面:终端登录和网络登录;session(会话);job control(作业控制)。那就首先来看terminal(终端)。这个词已经很熟悉了,显示器啊、键盘啊、鼠标啊都是终端,但我们

2015-01-14 10:56:20 774

原创 apue学习第十四天——进程控制3

这几天进度实在是有点慢(摇摇头~~),好啦,今天把第八章剩下的内容都搞定吧!exec族(这里用了个族,包括七个函数)怎么工作呢?我们来看看:The exec() family of functions replaces the current process image with a new process image. (一语中的)比如说fork了一个子进程,开辟了一个新的空

2015-01-10 15:56:39 1000

原创 apue学习第十三天——进程控制2

昨天刚把fork的大致使用情况说清楚对吧?关键就在于“调用一次,返回两次”,其它的都是浮云啦。在最后我们也注意到,当父进程结束并退出返回到shell时,child process被init process“收养”了,那我们就先看看几个special processes吧:swapper: ID = 0;scheduler process, no program on disk corr

2015-01-09 11:19:59 843

原创 apue学习第十二天——进程控制1(第八章)

我们开始第八章啦,process control。要说UNIX的进程控制,当然首先说进程的创建、执行和终止啦,对应的也就是fork, exec, exit。那么我们首先来说fork。要说fork,当然先看定义啦:#include pid_t fork(void); /*Returns: 0 in child, process ID of child in parent, −1 o

2015-01-08 20:18:35 925

原创 apue学习第十一天(2)——深度剖析auto, register, static, extern

好啦,我们接着上一节继续,上节说到了bss vs data,那我们就从变量开始说起。首先,有几个问题:你知道automatic variable 和 static variable的区别吗?你知道static放在function内部和外部的区别吗?你能说说definition和declaration有什么区别吗?或者问一个看起来貌似最最简单的额问题,你知道什么是变量吗?如果一知半解、不得要

2015-01-07 20:24:36 1031

原创 apue学习第十一天(1)——一个C程序的存储和执行

我们把上一节提到的C程序直接扩充到一个命令处理程序的框架,它要实现的功能也就是读取分析命令,对应书中图7-9和7-11代码的合并,看下面代码:#include "apue.h"#include #define TOK_ADD 5jmp_buf jmpbuffer;void do_line(char *);void cmd_add(void);int get_token(v

2015-01-07 09:21:16 1143

原创 apue学习第十天——一个C程序是如何启动和终止的(第七章)

Process environment,本章讲的主要就是一个程序在什么样的一个环境下执行以及怎样执行嘛!好,那从一个小小的main函数看起,一点点把它壮大:#include main(){ printf(hello, world\n);}那么就从这个简单main开始吧。发现它的问题了吧?对第一眼注意的就是,函数没有返回值;可以说,函数结束的时候没有终止状态,或者说它的终止

2015-01-06 20:26:22 1104

原创 apue学习第九天——系统数据文件和信息(第六章)

第六章内容很少,先来看system data files。介绍两种:password file和group file。/etc/passwd是一个ASCⅡ文件,姑且翻译成口令文件吧,它的权限是普通用户;/etc/shadow,shadow password翻译成阴影口令,它的权限是superuser,这涉及到安全问题了。单向加密算法把密码转成encrypted password(加密口

2015-01-05 21:37:19 853

原创 apue学习第九天——标准I/O库(第五章)

这是第五章标准I/O库的内容,花了几个小时浏览了一遍。感觉这些东西在第一遍看的时候没必要太抠细节,用到的时候再查,所以下面只是简单记录,好啦,开始。首先,给stream一个系统的定义:In computer science, a stream is a sequence of data elements made available over time. A stream can be

2015-01-05 20:28:43 995

原创 aupe学习第九天——文件系统

本文记录的是对昨天第四章内容的补充,来看一下文件系统吧,也就是UNIX怎样存储文件的,这个搞清楚之后,与文件系统相关的函数以及昨天stat结构体中剩下的属性就很容易理解啦!废话不说,直接看图:OK,从上往下,我们一层层来看!首先,对于一个磁盘,可以把它分区,也就是partition,每个分区可以包含一个文件系统;通常我们把一个分区格式化的时候,调用了某种类似于mkfs的函数(m

2015-01-05 10:14:58 866

原创 apue学习第八天——文件和目录(第四章)

接下来几章,打算不追究函数细节,快速通过。第四章,讲的主要是文件系统,着重讨论文件和目录的性质,当然啦,我们围绕着一个贯穿全局的stat structure,纵观一个文件的all attributes并详细说明。当然啦,还是那句话,不过细的追究具体函数,用到再查嘛!好啦,要想知道一个file的信息结构,UNIX在#include 中提供了一个很好的system call — sta

2015-01-04 21:02:05 954

原创 apue学习第七天(2)——文件共享和第三章的其它内容

前面曾经说了APUE第三章前面的几个系统调用,它们都是unbuffered I/O,下面来看看第三章其它的内容。首先是3.9节说的I/O efficiency(I/O效率)问题,前面提到在unbuffered I/O中BUFFSIZE的选择对文件I/O的效率有很大影响,书中图3-6用不同的BUFFSIZE值产生的时间来说明对效率的影响,磁盘块长度的值由st_blksize表示,关于bu

2015-01-03 20:52:25 1004

原创 apue学习第七天(1)——# in C/C++(C/C++中的井号)

终于又回来啦!元旦假期陪同学玩了两天,今天要回归正轨了!直接进入正题:在图3-11中有一段代码不怎么明白:#if !defined(_POSIX_C_SOURCE) ... ...#endif学了那么多年计算机,我也是挺懒的,碰到过很多次这样的语句,每次都是不求甚解的略过。今天呐,又拦在路上,索性解决它吧!我想,几乎所有学习C/C++的童鞋第一次写代码打的第一个字符就

2015-01-03 15:10:08 1412

深入理解linux虚拟内存管理(中文版)

深入理解linux虚拟内存管理(中文版)扫描版

2013-04-10

Cisco IP Routing: Packet Forwarding and Intra-domain Routing Protocols

Focusing on intra-domain dynamic routing protocols this book provides an in-depth understanding of IP routing and forwarding technologies, and their implementation within Cisco routers.

2012-05-03

dynamips路由模拟软件及源码

资源包括dynamips路由模拟软件及源码,软件运行需要Winpcap

2012-04-26

泛型编程与设计新思维

永远记住,编写代码的宗旨在于简单明了,不要使用语言的冷僻特征,耍小聪明,重要的是编写你理解的代码,理解你编写的代码,这样你可能会做的更好。

2012-03-19

Linux命令大全

很全的Linux命令集合,包括每个命令的功能说明、语法、补充说明、参数等,支持索引查询,很好的一本书

2012-03-15

国标软件设计文档

操作手册、测试分析报告、测试计划、概要设计说明书、开发进度月报、可行性研究报告、软件需求说明书

2012-03-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除