2018年2月27日

[译]《数学:更好的解释》之培养数学直觉

摘要: Developing Your Intuition For Math Our initial exposure to an idea shapes our intuition. And our intuition impacts how much we enjoy a subject. What d 阅读全文

posted @ 2018-02-27 14:41 AlanTu 阅读(835) 评论(0) 推荐(0) 编辑

你是想读书,还是想读完书?

摘要: 以前,读书前会很想读一本书,但实际读书时,经常是“想读完书”,而不是“想读书”。这种想法经常会让我的生活变得很痛苦,当你做一件事想着快点做完时,你的心思其实已经不在这件事上了。 这个问题在我大学时困扰了我很久。我没有意识到这本身其实是一个价值观问题,以至于我常在一些时间管理的书中寻找答案。那些书都只 阅读全文

posted @ 2018-02-27 14:37 AlanTu 阅读(304) 评论(0) 推荐(0) 编辑

给计算机专业大学生整理的书单

摘要: 作者: [美] Charles Petzold出版社: 电子工业出版社副标题: 隐匿在计算机软硬件背后的语言原作名: Code: The Hidden Language of Computer Hardware and Software译者: 左飞 / 薛佟佟出版年: 2010页数: 392定价: 阅读全文

posted @ 2018-02-27 14:35 AlanTu 阅读(7992) 评论(0) 推荐(2) 编辑

理解矩阵(三)

摘要: 在第二部分结束的时候,我说: “矩阵不仅可以作为线性变换的描述,而且可以作为一组基的描述。而 作为变换的矩阵,不但可以把线性空间中的一个点给变换到另一个点去,而且也能够把线性空间中的一个坐标系(基)表换到另一个坐标系(基)去。而且,变换点 与变换坐标系,具有异曲同工的效果。线性代数里最有趣的奥妙,就 阅读全文

posted @ 2018-02-27 14:23 AlanTu 阅读(333) 评论(0) 推荐(0) 编辑

理解矩阵(二)

摘要: 上一篇里说“矩阵是运动的描述”,到现在为止,好像大家都还没什么意见。但是我相信早晚会有数学系出身的网友来拍板转。因为运动这个概念,在数学和物理里是跟微积分联系在一起的。我们学习微积分的时候,总会有人照本宣科地告诉你,初等数学是研究常量的数学,是研究静态的数学,高等数学是变量的数学,是研究运动的数学。 阅读全文

posted @ 2018-02-27 14:22 AlanTu 阅读(254) 评论(0) 推荐(0) 编辑

理解矩阵(一)

摘要: 前不久chensh出于不可告人的目的,要充当老师,教别人线性代数。于是我被揪住就线性代数中一些务虚性的问题与他讨论了几次。很明显,chensh觉得,要让自己在讲线性代数的时候不被那位强势的学生认为是神经病,还是比较难的事情。 可怜的chensh,谁让你趟这个地雷阵?!色令智昏啊! 线性代数课程,无论 阅读全文

posted @ 2018-02-27 14:20 AlanTu 阅读(606) 评论(0) 推荐(1) 编辑

命名管道FIFO和mkfifo函数

摘要: 进程间通信必须通过内核提供的通道,而且必须有一种办法在进程中标识内核提供的某个通道,前面讲过的匿名管道是用打开的文件描述符来标识的。如果要互相通信的几个进程没有从公共祖先那里继承文件描述符,它们怎么通信呢?内核提供一条通道不成问题,问题是如何标识这条通道才能使各进程都可以访问它?文件系统中的路径名是 阅读全文

posted @ 2018-02-27 10:09 AlanTu 阅读(7341) 评论(0) 推荐(0) 编辑

管道读写规则和Pipe Capacity、PIPE_BUF

摘要: 一、当没有数据可读时 O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。 O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN。 示例程序如下: C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 阅读全文

posted @ 2018-02-27 10:07 AlanTu 阅读(1641) 评论(0) 推荐(0) 编辑

匿名管道和pipe函数

摘要: 一、进程间通信 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Com 阅读全文

posted @ 2018-02-27 10:04 AlanTu 阅读(1654) 评论(0) 推荐(1) 编辑

竞态条件与sigsuspend函数

摘要: 一、利用pause和alarm函数实现sleep函数 #include <unistd.h> int pause(void); pause函数使调用进程挂起直到有信号递达。如果信号的处理动作是终止进程,则进程终止,pause函数没有机会返回;如果信号的处理动作是忽略,则进程继续处于挂起状态,paus 阅读全文

posted @ 2018-02-27 10:03 AlanTu 阅读(409) 评论(0) 推荐(0) 编辑

实时信号与sigqueue函数

摘要: 一、sigqueue函数 功能:新的发送信号系统调用,主要是针对实时信号提出的支持信号带有参数,与函数sigaction()配合使用。 原型:int sigqueue(pid_t pid, int sig, const union sigval value); 参数: sigqueue的第一个参数是 阅读全文

posted @ 2018-02-27 10:01 AlanTu 阅读(1236) 评论(0) 推荐(0) 编辑

信号的捕捉与sigaction函数

摘要: 一、内核如何实现信号的捕捉 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下: 1. 用户程序注册了SIGQUIT信号的处理函数sighandler。 2. 当前正在执行main函数,这时发生中断或异常切 阅读全文

posted @ 2018-02-27 10:00 AlanTu 阅读(3524) 评论(1) 推荐(0) 编辑

信号的阻塞与未决

摘要: 一、信号在内核中的表示 实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号,SIGKILL 和 SIGSTOP 不能被阻塞。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递 阅读全文

posted @ 2018-02-27 09:58 AlanTu 阅读(1218) 评论(0) 推荐(0) 编辑

一些信号发送函数和不同精度的睡眠

摘要: 一、kill, raise, killpg 函数 int kill(pid_t pid, int sig); int raise(int sig); int killpg(int pgrp, int sig); kill命令是调用kill函数实现的,kill函数可以给一个指定的进程或进程组发送指定的 阅读全文

posted @ 2018-02-27 09:56 AlanTu 阅读(257) 评论(0) 推荐(0) 编辑

信号基本概述

摘要: 一、为了理解信号,先从我们最熟悉的场景说起: 1. 用户输入命令,在Shell下启动一个前台进程。 2. 用户按下Ctrl-C,这个键盘输入产生一个硬件中断。 3. 如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。 4. 终端驱动程序将C 阅读全文

posted @ 2018-02-27 09:53 AlanTu 阅读(370) 评论(0) 推荐(0) 编辑

终端、作业控制与守护进程

摘要: 一、终端的概念 在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal),控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。默认情况 阅读全文

posted @ 2018-02-27 09:50 AlanTu 阅读(465) 评论(0) 推荐(0) 编辑

wait/waitpid函数与僵尸进程、fork 2 times

摘要: 一、僵尸进程 当子进程退出的时候,内核会向父进程发送SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止) 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态。 A child that term 阅读全文

posted @ 2018-02-27 09:48 AlanTu 阅读(731) 评论(0) 推荐(0) 编辑

exec系列函数和system函数

摘要: 一、exec替换进程映象 在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离。这样的好处是有更多的余地对两种操作进行管理。当我们创建 了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行。当然,exec系列的函数也可以将当前进程替换掉。 二、 阅读全文

posted @ 2018-02-27 09:47 AlanTu 阅读(3810) 评论(0) 推荐(0) 编辑

fork函数相关总结

摘要: fork的作用是根据一个现有的进程复制出一个新进程,原来的进程称为父进程(Parent Process),新进程称为子进程(Child Process)。系统中同时运行着很多进程,这些进程都是从最初只有一个进程开始一个一个复制出来的。在Shell下输入命令可以运行一个程序,是因为Shell进程在读取 阅读全文

posted @ 2018-02-27 09:44 AlanTu 阅读(460) 评论(0) 推荐(0) 编辑

文件的内核结构file和dup实现重定向

摘要: 一、打开文件内核数据结构 1、一个进程打开两个文件 文件状态标志:读、写、追加、同步、非阻塞等 2、一个进程两次打开同一文件 3、两个进程打开同一文件 示例程序: C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 阅读全文

posted @ 2018-02-27 09:42 AlanTu 阅读(557) 评论(0) 推荐(0) 编辑

导航