算法刷题目录
array 121.买卖股票的最佳时机 215.数组中的第k个最大元素 54.螺旋矩阵 56.合并区间 560.和为-k-的子数组 88.合并两个有序数组 912.排序数组 bfs 102.二叉树的层序遍历 103.二叉树的锯齿形层序遍历 binary_search 34.在排序数组中查找元素的第一个和最后一个位置 4.寻找两个正序数组的中位数 69.x-的平方根 dfs 200.岛屿数量 22.括号生成 46.全排列 695.岛屿的最大面积 dp 1143.最长公共子序列 122.买卖股票的最佳时机-ii 300.最长递增子序列 322.零钱兑换(递归) 322.零钱兑换(递推) 53.最大子数组和 64.最小路径和(递归) 64.最小路径和(递推) 72.编辑距离(递归) 72.编辑距离(递推) linkedlist 141.环形链表 143.重排链表 148.排序链表 19.删除链表的倒数第-n-个结点 206.反转链表 21.合并两个有序链表 25.k-个一组翻转链表 82.删除排序链表中的重复元素-ii 92.反转链表-ii sliding_window 2...
进程树
进程树 返回综述: 进程管理 进程树的数据结构在 task_struct 中, 通过以下字段构成一棵多叉双向树: 12345678struct task_struct __rcu *real_parent; // 生物学父进程: 谁fork了我struct task_struct __rcu *parent; // 法律上的父进程: 谁来wait我、收我的SIGCHLD// 通常 real_parent == parent, 仅在 ptrace 调试时不同struct list_head children; // 作为父进程时: 子进程链表的哨兵头(入口)struct list_head sibling; // 作为子进程时: 挂在父进程children链表上的节点struct task_struct *group_leader; // 线程组的主线程(和进程树无关, 是线程组维度的字段) parent 和 real_parent, 为什么要有两个 parent?这个场景主要是为了应对 debug 即 ptrace 场景, 在不使用调试器的时候, 两者指向的都是父进...
进程管理
进程管理进程数据结构进程的数据结构是task struct cpu资源: 调度优先级 内存地址空间资源: mm_struct 打开的文件资源: file_struct files (一个数组, 存的就是打开的文件的地址, 索引即是文件描符 fd) 进程自己的信息与状态 进程状态: 存储在task->state, task->exit_state两个字段中 如TASK_RUNNING, TASK_INTERRUPTIBLE, TASK_UNINTERRUPTIBLE, __TASK_STOPED… 唯一ID pid: 线程级别的id gtid: 进程级别的id 文件系统信息 struct fs_struct *fs namespace 进程树关系: 该进程在整个进程树里面的位置 进程的状态123456789101112131415161718/* Used in tsk->state: */#define TASK_RUNNING 0x00000000#define TASK_INTERRUPTIBLE ...
