Linux编程
文章平均质量分 68
Learning_zhang
这个作者很懒,什么都没留下…
展开
-
进程管理方式
1、Supervisor2、Crontab设置定时任务,定时任务的粒度为分钟级的。5个星号按顺序排列如下1. 一小时内的分钟2. 一天内的小时3. 一个月内的日期4. 一年内的月份5. 一周的内的天示例:30 5 10 * * 表示该工作应该在每个月10日上午5:30运行* * * * 1-5 表示该工作应该每周一至周五运行*/2 * * * * 表示该工作应...原创 2020-01-09 20:55:52 · 308 阅读 · 0 评论 -
函数调用方式
#include #include //通过栈传入值的话void _fastcall funcFast(int a, int b){001C1B2F pop ecx 001C1B30 mov dword ptr [b],edx 001C1B33 mov dword ptr [a],ecx printf("%d", a+b原创 2017-07-31 10:13:09 · 451 阅读 · 0 评论 -
函数的调用方式小结
#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) //表明asmlinkage是通过栈来传递参数而不通过寄存器来传递参数#define fastcall __attribute__((regparm(3))) //参数不是通过栈传递,而是直接放到寄存器里,被调用函数直接从寄存器取参数缺省的时候是通过寄转载 2017-10-13 21:01:54 · 272 阅读 · 0 评论 -
锁小结
锁(程序员的自我修养,liunx)同步与互斥: 同步:对多个相关进程在执行次序上进行协调,使并发指向的诸进程之间能按照一定的规则共享系统资源,并能很好的相互合作,从而来保证程序的执行可再现性 互斥:一个时间段内,只能有一个进程访问这个资源,资源的排他性。区别与同步,诸进程间可以无序访问 信号量和互斥锁的区别: 互斥量值只原创 2017-10-13 21:03:54 · 349 阅读 · 0 评论 -
杂记小结
1.管道的大小有默认值65536个字节,即是2的16次方,而与tcp相比较,都是字节流,管道的大小可以通过fcntl函数来修改 全双工的管道socketpair并行性:两个及多个事件同一时刻发生并发性:两个或多个事件在同一时间间隔内发生对象:是指现实世界中具有相同属性,服从相同规则的一系列事务的抽象2.提高服务器的性能 1.分布式,何为分布式原创 2017-10-13 21:07:09 · 261 阅读 · 0 评论 -
小结小结
1.管道为什么是半双工2.原子锁,互斥锁(总线加锁),读写锁? 3.quickSort的优化,插入排序嵌套,递归变成循环,对轴的选择。4.共享内存的实现原理,内存地址映射到一块相同的物理内存。5.写时拷贝6.进程和线程的区别被其它线程读写。5.线程的并发性。6.系统开销,线程进程创建销毁的开销进程线程切换的效率大小不同,进程的效率是线原创 2017-10-13 21:16:53 · 295 阅读 · 0 评论 -
fork剖析小结
fork是完全复制 clone则是将资源有选择的复制给子进程,没有复制的资源通过指针的复制让子进程共享,其中的flag用户可以进行设置来进行选择复制共享 vfork 除了task_struct结构和系统空间堆栈以外的资源全部都通过数据结构复制的继承 子进程复制了父进程当前的寄存器值,将子进程加入到进程调度的就绪队列,父子进程拥有相同的页表,然后映射到相同的物理页原创 2017-10-13 20:54:02 · 305 阅读 · 0 评论 -
虚拟地址映射小结
32位----两级页表映射段寄存器16位,其中低两位表示的是在权限,内核态,用户态。第底三位表示的是GDT,LDT,其余十三位用来表示在GDT中的偏移GDT中的段描述项,表示基址32位,P位-是否在内存中,还有表示读写可执行权限 64字节CR3中存储--PGD地址MMU中:页目录项--页面表--物理页面页目录项,20位表示下一层的页面地址 最低位P位表示所映转载 2017-10-13 21:00:03 · 620 阅读 · 0 评论 -
进程切换小结
谁在调用schedule进行该进程的调度: 进程在运行中,会有几种情况发生中断,第一就是在时钟中断,进入中断处理程序,调用schedule,第二返回用户空间的时候ret_from_sys_call时进行检查是否该调度了。exit函数和sleep这些函数则主动调用scheduleschedule中进行进程的切换,只能是由进程在内核中主动调用,或者在当前进程从系统空间返回用户空原创 2017-10-13 20:58:43 · 876 阅读 · 0 评论 -
动态内存分配小结
malloc/calloc/free是库函数,在底层使用系统调用进行内存申请,自己添加了中间层进行管理,brk,sbrk,mmap,munmap是系统调用.申请的是虚存mmap 映射匿名页, 当发生缺页异常时, linux 内核为缺页分配一个新物理页,并将该物理页清 0对空闲的小内存块只会在 malloc 和 free 的时候进行合并主分配区与非主分配区用环形链表进行管理。 每一个分配区利用互斥锁原创 2017-10-13 20:48:09 · 404 阅读 · 0 评论 -
socket编程之listen
打开了三个客户端端与服务器端建立连接,一个客户端发起之后会有两个条目产生,在开始前的两个client建立连接时,产生的服务器端和客户端段的状态都是estblisted,但是直到第三个时,客户端的状态端是estbllished,服务器端的是sys_recv状态。猜测在listen时已经发了三次握手中的前两次,但是第三此客户端给服务器端发送的ack可能需要accept来接收才能建立完全的连原创 2017-08-21 11:22:00 · 614 阅读 · 0 评论 -
Linux下su命令的实现
Linux中的用户切换su. 将su可执行文件所属者设置为root的,则执行su时候则拥有了root的权限 切换到root用户下,chown root su 和chmod u+s su来改变su文件的权限#include #include #include #include #include #include #include #include #include int m原创 2016-11-26 11:33:52 · 3167 阅读 · 0 评论 -
linux下自定义的bash
#include #include #include #include #include #include #include #define MAX_ARGV_NUM 10#define PATH //"/home/Desktop/project/mybin/exec/" 通过exec调用的可执行文件的目的路径void printinfo();int main(in原创 2016-11-26 11:50:59 · 641 阅读 · 0 评论 -
进程间的通信之管道
进程之间的通信,管道,套接字,共享内存,信号等。管道分为有名管道和无名管道,有名管道类似于建立一个文件使得两进程之间可以进行通信,其存储方式就是文件的存储方式。而无名管道的生存依赖与进程的生命周期,无名管道的适用面小于有名管道,只适用与有亲缘关系的进程,比如通过fork()函数产生的进程,父进程子进程等等通过有名管道两个进程之间相互通信读取管道中信息的进程:int main()原创 2016-11-30 17:23:22 · 435 阅读 · 0 评论 -
管道
#include#include #include #include int main(){ int fd[2]; if(pipe(fd)<0) { return -1; } int pid = fork(); if (pid == 0) { char *str="niaho zhongguo"; sleep(12); int res = write(fd[原创 2017-08-02 10:56:43 · 526 阅读 · 0 评论 -
select范例
/////////////select server//////////////////#include #include #include #include #include #include using namespace std;#include #include #include //struct timeval//{// time_t tv_sec; 表示秒 /原创 2017-05-04 22:21:50 · 341 阅读 · 0 评论 -
测试粘包现象
服务器#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int main(int argc, char *argv[]){ int sockfd = 0;原创 2017-08-08 21:23:36 · 431 阅读 · 0 评论 -
Linux下的ls命令
#include #include #include #include #include #include#define LS 1#define LL 2#define LA 3void print(char *str, int tag); //如果用户执行的ll该怎么进行,将ls的可执行文档复制一份改名为ll?原创 2016-11-26 11:41:37 · 396 阅读 · 0 评论