摘要:
一、什么是套接字 所谓socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接是应用程序与网络协议根进 阅读全文
2021年12月10日
摘要:
一、网络结构模式 1.1 C/S结构 服务器 - 客户机,即 Client - Server(C/S)结构。C/S 结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。客户机是因特网上访问别人信息的机器,服务器则是提供信息供人访问的计算机。客户机通过局域网与服务器相连,接受用 阅读全文
摘要:
一、生产者消费者模型 /* 实现粗略的生产者消费者模型(未同步,未使用信号量) */ #include<stdio.h> #include<string.h> #include<unistd.h> #include <pthread.h> struct Node{ int num; struct N 阅读全文
2021年12月9日
摘要:
一、同步 1.1 线程不同步会产生的问题 如下代码和结果所示,当线程没有同步时,多个线程抢占CPU资源,可能导致各种问题的发生。 /* 使用多线程实现卖票: 有三个窗口,一共是100张票 */ #include<stdio.h> #include<string.h> #include<unistd. 阅读全文
摘要:
一、线程 1.1 什么是线程 与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域,其中包括初始化数据段、未初始化数据段,以及堆内存段。(传统意义上的UNIX 进程只 阅读全文
2021年12月7日
摘要:
一、三个概念 1.1.终端 在UNIX系统中,用户通过终端,登录得到一个shell进程,这个终端称为shell进程的控制终端,进程中,控制终端是保存在PCB中的信息,而fork()会复制PCB中的信息,故shell进程启动的其他进程的控制终端也是这个终端。默认情况下(没有重定向),每个进程的标准输入 阅读全文
摘要:
一、共享内存 1.1什么是共享内存 共享内存允许两个或者多个进程共享物理内存的同一块区域(通常被称为段)。由于一个共享内存段会称为一个进程用户空间的一部分,因此这种IPC 机制无需内核介入。所有需要做的就是让一个进程将数据复制进共享内存中,并且这部分数据会对其他所有共享同一个段的进程可用。与管道等要 阅读全文
2021年12月6日
摘要:
一、信号 1.1什么是信号 信号是 Linux进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断.转而处理某一个突发事件。 发往进程的信号多数都是来 阅读全文
2021年12月4日
摘要:
一、进程通信基础 1.什么是进程通信 进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源。但是,进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信( IPC:Inter Proc 阅读全文
摘要:
一、进程的创建与相关函数 1.进程创建 系统允许一个进程创建新的进程,新进程为原进程的子进程,子进程还可以创建新的子进程,形成进程树结构模型,其相关函数为pid_t fork(void);具体使用方式如下: /* #include <sys/types.h> #include <unistd.h> 阅读全文