Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

Linux内核中的双向循环链表学习

Linux内核中的双向循环链表学习

一、概述Linux内核中大量使用了链表这个基本数据结构,因此有必要去窥探一下其“葫芦里卖的是什么药”。先来些基本知识点吧:1.数据元素间是一对一关系;2.链表中的元素个数是有限的;3.同一表中各数据元素的类型和长度相同。二、实现先上代码,有个感性的认识,后面再解释。#include<stdio.h>#include<malloc.h>//链表头结构struct list_head{ struct list_head *next,*p...
Linux 内核级后门的原理和简单实战

Linux 内核级后门的原理和简单实战

Linux是一个具有保护模式的操作系统。它一直工作在i386 cpu的保护模式之下。内存被分为两个单元: 内核区域和用户区域。(译者注:我觉得还是这样叫比较顺口)内核区域存放并运行着核心代码,当然,顾名思义,用户区域也存放并运行用户程序。当然,作为用户进程来讲它是不能访问内核区域内存空间以及其他用户进程的地址空间的。不幸地是, 核心进程也有同样的情况。核心代码也同样不能访问用户区地地址空间。那么,这样做到底有什么意义呢?好, 我们假设当一个硬件驱动试图去写...
Android 4.1 Surface系统变化说明

Android 4.1 Surface系统变化说明

时间真的是很巧,本来没打算写Surface系统的(相比AudioFlinger来说,Surface变化之后的难度真的是毛毛雨了),但为了庆祝泷泽萝拉发第二部大作,我决定还是要坚持一下。下面将延续Audio的分析风格(http://www.linuxidc.com/Linux/2012-07/65572.htm),从几个层面来介绍Surface系统的变化(JB号称在Surface这块做过大量的优质的改进,无非就是引入在PC机上早都烂熟的VSYNC,Tripl...
Linux shell编程之变量_01

Linux shell编程之变量_01

计算机硬件是由内核(kernel)管理的。我们能通过shell,KDE或者应用程序和内核通信,好让内核可以控制硬件来完成我们的工作。能够操作应用程序的接口都可以成为shell。shell是linux的任督二脉。只要打通了这二脉,任何武功都能随你运用了。shell版本众多。有sh,csh等。你可以vim /etc/shells,瞧瞧当前你的linux有多少个可以使用的shell。linux默认是/bin/bash。当我们登入的时候,系统就会给我们一个shel...
bash技巧:提示行魔术 (PS1环境变量)

bash技巧:提示行魔术 (PS1环境变量)

如果您很容易使 shell 提示行变得色彩绚烂斓且带有更多信息,为什么还要坚持用单调的标准 shell 提示行呢?在这篇技巧中,Daniel Robbins 将说明如何获得符合您的意愿的 shell 提示行,并会说明如何动态更新 X 终端的标题栏。作为 Linux/UNIX 人,我们有很长的时间是在 shell 中工作,并且在许多情况下,下面这一行就是始终盯着我们的那个提示行:bash-2.04$如果您恰巧是超级用户 (root),您就有权使用下面这个美丽...
Ubuntu 9.10环境下缓存区溢出攻击实验

Ubuntu 9.10环境下缓存区溢出攻击实验

环境:Ubuntu 9.10 kernel 2.6.31 gcc版本:4.4.1这个是csapp 《深入理解计算机系统》的一道题,直接在原程序运行的时候实现缓存区溢出攻击已经不可能实现了,除非你是用的版本很低的内核和gcc,如gcc 3.4.3。先是王珑珑同学做这道题,我也跟着做了下,花了挺长时间,这期间很感谢王珑珑同学的耐心讲解,thanks~~~原题如下:/* Bomb program that is solved using a buffer ove...
Objective-C语法之NSSet和NSMutableSet

Objective-C语法之NSSet和NSMutableSet

NSSet和NSMutableSet是无序的, 但是它保证数据的唯一性。当插入相同的数据时,不会有任何效果。从内部实现来说是hash表,所以可以常数时间内查找一个数据。1、NSSet的使用[NSSet setWithSet:(NSSet *)set]; 用另外一个set对象构造[NSSet setWithArray:(NSArray *)array];用数组构造[NSSet setWithObjects:...]:创建集合对象,并且初始化集合中的数值,结尾...
<< 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 >>