Linux内核 | 内核同步

1. 定义临界区和竞争条件临界区:访问和操作共享数据的代码段 竞争条件:多个执行线程在一个临界区同时执行死锁:每个线程都在互相等待,但它们永远也不会释放占用的资源。自死锁:一个执行线程试图去获取一个自己已经持有的锁,它不得不等待锁释放,但因为它忙于等待这个锁,所以自己永远也不会有机会释放释放锁。2. 设计规则以下简单规则避免死锁按顺序加锁防止发生饥饿不要重复请求一个锁设计简单-复杂加锁机制,越可能

- 阅读全文 -

Linux内核 | 系统调用

1. 系统调用内核提供的用户空间和内核进行交互的一组接口,应用程序受限地访问硬件设备,提供创建新线程并与已有的进程进行通信,也提供了申请操作系统其他资源的能力。1.2 系统调用形式asmlinkage long sys_getpid(void)asmlinkage限定词是一个编译指令,通知编译器仅从栈中提取该函数的参数,每个系统调用都需要这个限定词。为了兼容32位和64位系统,函数返回long。1

- 阅读全文 -

Linux内核 | 进程调度

1. 进程调度原理最大限度地利用处理器时间,只要有可以执行的进程,那么就总会有进程正在执行。按多任务系统分类抢占式多任务非抢占式多任务按进程分类IO消耗型:进程的大部分时间用来提交I/O请求或是等待I/O请求。处理器消耗型:进程的大部分时间在执行代码1.1 进程优先级根据进程的价值和其对处理器的时间需求对进程进行分级。Linux采用了两种优先级范围nice值,范围[-20,19],nice值越大,

- 阅读全文 -

Linux内核 | 进程管理

1. 进程和线程1.1 定义进程是处于运行状态的程序和相关资源的总称,是资源分配的最小单位。线程是进程的内部的一个执行序列,是CPU调度的最小单位。有一段可执行程序代码。有一段进程专用的系统堆栈空间和系统空间堆栈。有进程描述符,用于描述进程的相关信息。有独立的存储空间,也就是专有的用户空间,相应的又会有用户空间堆栈。Linux系统对于线程实现非常特殊,他并不区分线程和进程,线程只是一种特殊的进程罢

- 阅读全文 -

socket编程 | windows下socket编程 实践篇

socket概述socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。接口详解soc

- 阅读全文 -