操作系统
千筠Wyman
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【网络编程基础】Socket 通信
Socket 通信本地的进程间通信方式有很多种,不同进程之间可以通过进程号来区分不同的进程。那在网络中通信的进程又是如何唯一标识一个进程呢?根据 TCP/ IP 协议簇的定义,网络层的 IP 地址可以唯一标识网络中的主机,传输层的协议+端口可以唯一标识主机中的应用程序(进程),因此利用三元组(IP 地址,协议,端口)就可以标识网络中的进程了,而网络中的进程通信就可以利用这个标志实现进程间交互。使用 TCP / IP 协议的应用程序通常采用应用编程接口来实现网络进程间的通信,目前几乎所有的应用程序都是采原创 2020-07-29 23:13:12 · 675 阅读 · 0 评论 -
【编程基础】堆空间与栈空间
在 C 语言中,内存分布的部分情况如下图所示:有些部分并没有在图中表示出来,实际上内存分布的功能划分从高地址到低地址依次是:内核空间:应用程序不允许访问的部分,只能由内核进行操作,操作系统的内核程序映射到这个区域。栈空间:保存局部变量。文件映射区:进程打开文件后,将文件内容从硬盘读到进程的文件映射区,以后就直接在内存中操作这个文件,读写完成后保存时,再将内存中的文件写入硬盘中。堆空间:运行时使用,常用 malloc( ) / free( ) 或者 new( ) / delete( )。全局的原创 2020-07-20 21:25:52 · 6786 阅读 · 3 评论 -
【编程基础】进程、线程与协程
进程、线程、协程并行与并发并行:真正意义上的同时进行多个任务。这只能在多核 CPU 上实现。并发:从宏观上看,并发就是同时进行多个事件。但实际上,这些事件并不是在同时进行,而是交替进行的。由于 CPU 的运算速度非常快,给我们造成了一种在同一时间内进行多个事件的错觉。进程进程是具有一定独立功能的程序,它是系统进行资源分配和调度的一个独立单位。在出现线程前,进程是拥有资源和独立调度的基本单位。程序运行时,系统会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它时就会为它分配原创 2020-07-13 16:31:09 · 286 阅读 · 0 评论 -
【编程基础】进程间通信(IPC)
进程间通信进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或者交换信息的过程。常见的方式有:管道(无名管道)、FIFO(命名管道)、消息队列、信号量、共享内存、Socket、Streams 等。其中 Socket 和 Streams 支持不同主机上两个进程之间的通信。管道管道通常指无名管道,是 UNIX 系统最古老的 IPC 形式。它具有以下特点:半双工:数据只能在一个方向流动,有固定的读端和写端。亲缘通信:只能用于具有亲缘关系的进程之间的通信,也原创 2020-07-13 16:28:40 · 2046 阅读 · 0 评论 -
【编程基础】锁机制与死锁
Linux 锁机制Linux 的内核锁主要是自旋锁和信号量。互斥锁 Mutex Lock互斥锁(Mutual-Exclude Lock)是最容易理解、使用最广泛的一种同步机制。使用互斥锁保护的临界区只允许一个线程进入,其他线程如果没有获取锁权限,就只能等候。int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); int pthread_mutex_destr原创 2020-07-13 16:26:44 · 541 阅读 · 0 评论 -
【网络编程基础】I/O 多路复用(select,poll,epoll)
网络编程基础I/O 多路复用I/O 多路复用(multiplexing)的本质是通过一种机制(系统内核缓冲 I/O 数据),让单个进程可以监视多个文件描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写操作。为了解决单个应用进程能同时处理多个网络连接的问题,通常采用 select、poll、epoll 作为解决方案。它们的区别主要体现在以下三个方面:系统如何知道进程需要监控哪些连接和事件(也就是fd)。系统知道进程需要监控的连接和事件后,采用什么方式去对fd进行状态的监原创 2020-06-22 15:37:00 · 369 阅读 · 0 评论
分享