- 博客(15)
- 收藏
- 关注
原创 上海快递代理点信息-百度坐标
中通快递address:上海市青浦区华志路1685号 phone:4008270270 location:31.2318,121.204顺丰速运address:双浜路258号c1栋3楼 phone:4006818586 location:31.1872,121.267顺丰速运address:上海市浦东新区张江高科技园区新前路1309号北黄家宅130号 pho
2016-08-08 18:11:08
51146
原创 上海各行政区域地铁站分布数量
首先是地铁站代号ST_NO,ST_NAME,ST_NAME_EN,LINE_NO,X,Y,TRANSFER_TAG,SERIAL_NO,ST_HORIZONTAL0111,莘庄,Xinzhuang ,1,201,771,换乘站,28,地面0112,外环路,Waihuanlu ,1,224,738,普通站,27,地面0113,莲花路,Lianhua Road ,1,243,721,普通站,
2016-07-12 15:55:45
9505
5
原创 在linux 4.x内核中增加系统调用
系统版本:deepin 2015.1 x64内核版本:4.4.31. 下载内核源代码在www.kernel.org处下载相应的内核版本,解压并进入源代码根目录。2. 增加系统调用号在系统调用入口表中增加一项:vim arch/x86/entry/syscalls/syscall_32.tbl在文件末端增加自己的系统调用函数以及对应的系统调用编号,注意不要覆盖原有的系统调
2016-02-29 14:55:22
9698
4
原创 上海地铁站谷歌地图经纬度信息
最近在研究上海地铁数据,专门统计了上海地铁站的经纬度信息。坐标全部采集自谷歌地图,可能有些许误差。七宝:31.155364678184498,121.34882432933009:station七宝:31.155365176348695,121.34882155741643:station七宝:31.158654338683657,121.32836989818442:station三林
2016-01-08 16:01:00
14244
5
原创 《Linux内核设计的艺术》总结: 进程1的创建
现在操作系统已经有了第一个用户进程0,进程0是一个idle进程,现在它要去创建进程11. 通过系统调用fork创建进程1. if (!fork()) { /* we count on this going ok */ init(); } for(;;) pause();fork系统调用会创建子进程,并和父进程共享代码段,它有两个返回值。在父进程中返回子进程的pid,每次创
2015-09-22 21:14:37
659
1
原创 《Linux内核设计的艺术》总结:设备环境初始化及激活进程0
现在main函数开始执行了,可真正意义上的说linux操作系统开始运行了。main函数将设置程序在操作系统下运行所需的环境并创建进程0,操作系统才有了第一个进程。1. 设置根设备和硬盘信息。之前在setup程序中加载了一些硬件信息并存储在物理内存0x90000-0x901FC处,main函数从这些参数中设置了全局变量根设备ROOT_DEV、硬盘信息drive_info,这两个信息在设置操作系统
2015-09-20 15:35:35
984
原创 《Linux内核设计的艺术》总结:开机加电到main执行
开机加电到main执行:BIOS运行按下开机键之后计算机便开始运行。CPU一开始在16位的实模式下运行,寻址空间为20位,也就是1MB。CPU执行的是内存中的指令,这时内存是空的,没有可执行的指令。所以BIOS会首先将自身程序加载到物理内存的特定位置,386之前的机器为0xFFFF0的位置,该位置是配件厂商协商好的。然后CS和IP寄存器会分别被强制设置为0xF000、0xFFF0,
2015-09-18 19:08:01
689
原创 Anddroid启动service:restart_processes函数分析
init程序在最后的for循环中会重新启动一些service,通过调用restart_processes函数,循环遍历service list中的每一个service。如果service设置了SVC_RESTARTING标志位,调用restart_service_if_needed函数尝试启动或重启该service。restart_service_if_needed函数实现如下:stati
2014-12-24 16:03:47
890
原创 Android读取init.rc配置文件parse_config函数解析
Android源代码版本:4.0.3static void parse_config(const char *fn, char *s)函数在Android的init程序启动过程中用于解析init.rc文件。init.rc文件是安卓系统的初始化文件,其中的内容可以分为三大类:1. Action:一个action表示一个动作,以关键字on作为开头,并加上action的名称,接下来的是对应于这个
2014-12-23 15:47:49
2010
原创 Android-4.0.3-init.c启动源码分析
作为第一个内核启动的进程,init进程初始了化安卓运行环境。执行了文件夹建立,文件系统挂载,全局property初始化,建立监听 socket,根据init.rc文件启动service,执行action,等一系列操作,下面来具体看看在Android 4.0.3中的源代码具体实现:main函数:int main(int argc, char **argv){ int fd_co
2014-12-22 18:22:39
702
原创 TCP中的send函数---tcp_sendmsg函数的实现
当应用层程序调用send发送数据之后,相应系统调用为sys_sendmsg,在socket文件系统中,该调用指向inet_sendmsg。而再对于TCP协议,inet_sendmsg指向tcp_sendmsg函数,所以tcp的发送函数接口是tcp_sendmsg。该函数首先对sock加锁防止下半段中断访问,对于阻塞的发送模式还需设置超时时间。
2014-10-31 15:29:03
4773
原创 TCP中的inet_hashinfo介绍
inet_hashinfo:这是一个类型为tcp_hashinfo的全局变量,保存当前系统的各种状态的tcp_sock(包括established,listen和bind).内核初始化调用tcp_init函数时会对该变量进行初始化.结构为:struct inet_hashinfo { struct inet_ehash_bucket *ehash; //establ
2014-10-26 15:29:12
2696
1
原创 TCP延迟确认定时器
TCP延迟确认定时器:TCP延迟确认定时器是指在一个TCP连接中,当一方收到另一端的数据之后,并不是立马返回ACK进行确认。而是等待200ms(在linux-2.6.38内核实现中应该是400ms),如果这段时间内有新的数据要发往对方,本地将ACK和数据封装在一个数据包中,称作捎带确认机制。没有新数据的话也要将ACK发给对方。这样做减少了一次数据传输带来的消耗,但是在另一方面增加了延迟。可
2014-10-23 20:37:35
1458
原创 TCP重传定时器
//本文主要介绍linux内核中TCP的重传定时器机制:用到的源代码是2.6.38//一个tcp连接中,如果一方过了rto时间内都没收到对方的ACK,会触发重传并调用tcp_write_timer定时器处理函数//其中RTO表示重传时间,RTO是动态计算的,需要考虑到当前的重传次数。//tcp_write_timer调用tcp_retransmit_timer重传处理函数,后者会调用t
2014-10-23 17:28:28
1740
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人