
系统编程
文章平均质量分 92
love_in_code
IT爱好者
展开
-
进程与线程
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。转载 2015-11-24 11:33:28 · 387 阅读 · 0 评论 -
为何说TCP是可靠连接而UDP是不可靠连接
首先看一下TCP协议的报头: 而UDP协议的报头大概如下: 可以很明显的看出来,TCP的报头多了好多项,顺序号、应答号等等。 在TCP协议中使用了接收确认和重传机制。这样每一次信息的传输都经过了像三次握手那样的一个过程,使得每一个信息都能保证到达,是可靠的。 而UDP是尽力传送,没有应答和重传机原创 2016-04-21 17:52:02 · 5821 阅读 · 0 评论 -
网络数据包发送接收全过程
Linux的网络接口分为四部分:网络设备接口,网络接口核心,网络协议族,网络接口socket层。可参考:http://lxr.linux.no/linux+v2.6.30.4/net/ 网络设备接口部分主要负责从物理介质接收和发送数据,实现的文件在linu/driver/net目录下面。 网络接口核心部分是整个网络接口的关键部位,它为网络协议提供统一的发送接口,屏蔽各种各样转载 2016-04-14 16:38:53 · 3744 阅读 · 1 评论 -
Linux 进程间通信 ----消息队列
一、消息队列(message queue)消息队列也是System V IPC机制之一。消息队列与命名管道类似,但少了打开和关闭管道方面的复杂性。但使用消息队列并未解决我们在使用命名管道时遇到的一些问题,如管道满时的阻塞问题。消息队列提供了一种在两个不相关进程间传递数据的简单有效的方法。与命名管道相比,消息队列的优势在于,转载 2016-03-21 21:56:01 · 408 阅读 · 0 评论 -
Linux c 管道和有名管道(FIFO)
Linux--进程间通信(管道及有名管道FIFO)(转)一. 管道: 1.只能用于具有亲缘关系的进程之间的通信 2.半双工通信模式 3.一种特殊的文件,是一种只存在于内核中的读写函数 管道基于文件描述符,管道建立时,有两个文件描述符:a. fd[0]: 固定用于读管道b. fd[1]: 固定用于写管道 创建管道:pipe()转载 2016-03-20 16:59:54 · 1590 阅读 · 0 评论 -
linux中静态库和动态库的区别
linux中静态库和动态库的区别一、不同库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编原创 2016-03-20 15:40:33 · 497 阅读 · 0 评论 -
Linux的system()和popen()差异
Linux的system()和popen()差异1. system()和popen()简介在linux中我们可以通过system()来执行一个shell命令,popen()也是执行shell命令并且通过管道和shell命令进行通信。 system()、popen()给我们处理了fork、exec、waitpid等一系列的处理流程,让我们只需要关注最后的返回结果(函数的返回值转载 2016-03-20 10:34:11 · 579 阅读 · 0 评论 -
大小端机器的判定
所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数 据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,原创 2016-03-04 15:04:16 · 376 阅读 · 0 评论 -
POSIX 线程库功能接口与知识点汇总
POSIX 线程库功能接口与知识点汇总—— Linux 平台cnyinlinux 2016 元月 西安 库 : /lib64/libpthread.so*头文件 : pthread.h 目 录第一篇 线程创建与控制第二篇 线程属性设置第三篇 线程同步技术开 篇本文只是针对PO转载 2016-03-16 17:05:46 · 1101 阅读 · 0 评论 -
库函数与系统调用的区别联系
库函数 与 系统调用 的区别联系一,概念系统调用(英语:system call),指运行在用户空间的应用程序向操作系统内核请求某些服务的调用过程。 系统调用提供了用户程序与操作系统之间的接口。一般来说,系统调用都在内核态执行。由于系统调用不考虑平台差异性,由内核直接提供,因而移植性较差(几乎无移植性)。库函数(library function),是由用户或组织自己转载 2016-03-16 17:03:53 · 504 阅读 · 0 评论 -
C/S架构与多进程多线程
C/S架构与多进程多线程 如题,C/S架构指的是服务器(Server)与客户机(Client)协作完成网络程序功能的一种模式。它是已经在计算机世界活跃数十年的一种古老的软件架构。如今已渗入到各领域IT系统中。其模型如下所示。本文从以下3个方面阐述C/S架构软件设计与多进程多线程实现多任务框架。1.C/S工作原理2.多任务设计3.多进程与多线程转载 2016-03-16 17:02:33 · 3590 阅读 · 0 评论 -
Linux进程与线程的区别
Linux进程与线程的区别cnyinlinux本文较长,耐心阅读,必有收获!进程与线程的区别,早已经成为了经典问题。自线程概念诞生起,关于这个问题的讨论就没有停止过。无论是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了。一般程序员而言,搞清楚二者的概念,在工作实际中去运用成为了焦点。而资深工程师则在考虑系统层面如何实现两种技术及其各自的性能和实现代价。转载 2016-03-16 17:01:32 · 520 阅读 · 0 评论 -
线程实质
线 程线程与进程的比较概述:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享转载 2016-03-16 17:00:13 · 3354 阅读 · 0 评论 -
exit()使用
注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXIT_SUCCESS);可读性比较好一点。作为系统调用而言,_exit和exit是一对孪生兄弟,它们究竟相似到什么程度,我们可以从Linux的源码中找到答案:#d转载 2016-03-03 15:55:51 · 1131 阅读 · 0 评论 -
TCP三次握手和四次挥手详解
TCP头部: 其中 ACK SYN 序号 这三个部分在以下会用到,它们的介绍也在下面。暂时需要的信息有:ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接转载 2016-03-02 11:41:08 · 281 阅读 · 0 评论 -
库函数与系统调用的联系与区别
一. 概念系统调用(英语:system call),指运行在用户空间的应用程序向操作系统内核请求某些服务的调用过程。 系统调用提供了用户程序与操作系统之间的接口。一般来说,系统调用都在内核态执行。由于系统调用不考虑平台差异性,由内核直接提供,因而移植性较差(几乎无移植性)。库函数(library function),是由用户或组织自己开发的,具有一定功能的函数集合,一般具有较好转载 2016-01-06 22:30:55 · 8394 阅读 · 0 评论 -
TCP通信中的粘包问题
TCP通信中的粘包问题尹德位 2015 西安 关键词 : TCP 网络通信 粘包 Linux C/S一 粘包问题概述二 粘包回避设计 第一章 粘包问题概述1.1 描述背景采用TCP协议进行网络数据传送的软件设计中,普遍存在粘包问题。这主要是由于现代操作系统的网络传输机制所产生的。我们知道,网络通信采用的转载 2016-03-16 16:58:52 · 1999 阅读 · 0 评论