
Linux
xiaomashitu_
这个作者很懒,什么都没留下…
展开
-
2021.11.4
Linux下,线程和进程区别不大,都有task_struct进程描述符。多线程进程可以看作是几个共享地址空间的进程的集合。但多线程一定是由一个主线程开始,这个主线程启动其他线程。主线程的线程栈在内核空间位置附近,大小为8MB,其他线程的线程栈是主线程在调用pthread_create创建线程时,由mmap分配的,所以这些线程栈在mmap的区域内,跟共享库入口同属一个区域,phtread_t tid中存储的就是线程结构体在mmap区域中的入口。普通线程栈的默认大小也是8MB,但是因为是动态分配的,所以可以在线原创 2021-11-04 15:36:26 · 166 阅读 · 0 评论 -
hello world 如何打印到屏幕上的
我们编写的第一个c语言程序,hello world,程序编译 运行,最终输出到屏幕上,那这个底层到底是如何在计算机内部流转的呢???假设此时 我们已经编译生成了一个hello文件,我们要./hello运行它,那具体的操作就是,我们先通过i/o输入设备–键盘,输入./hello,然后通过总线传到i/o桥,通过i/o桥数据来到cpu,先通过寄存器,再在alu中计算又回到寄存器,通过i/o桥数据到达内...原创 2020-04-22 10:45:46 · 1448 阅读 · 0 评论 -
文件的原子操作
每个进程的维护Linux下时task_struct ,其中有一个记录项,记录项是一个文件指针,指向一个文件描述符表,文件描述表相关联的是文件文件描述符标志和指向文件表项的指针内核为所有打开的文件维护一张文件表项,与之相关连的是文件状态标志,当前文件偏移量,指向该文件v节点的指针每个打开的文件都有一个v节点结构,v节点包含了文件类型对文件进行各种操作的函数,例如open,write等等,i 节...原创 2019-12-19 20:13:09 · 363 阅读 · 0 评论 -
open write read
open#include<fcntl.h>int open(const char *pathname, int flags, mode_t mode)flags有三个必须选项 O_RDONLY, O_WRONLY, O_RDWR 只读,只写,读写flags其他选项O_CREAT, O_APPENDO_CREAT 这个参数必须和第三个参数mode一起使用,mode指定文件的访...原创 2019-12-19 18:08:19 · 220 阅读 · 0 评论 -
sleek
lseek#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);lseek 函数,就是改变 flip[fd] 指向的 struct file 这个结构中的 f_pos 成员的。当用 open 函数打开一个文件的时候,该偏移量 f_pos 被默认指定为 0。whence:它的选项如果 whence 等...原创 2019-12-19 18:05:11 · 442 阅读 · 0 评论 -
什么是进程
首先说一下程序和进程的区别 存储位置不同:程序存储在硬盘当中,进程则是从硬盘加载到内存之中 资源分配不同 : 创建进程操作系统要为进程分配相应的资源,内存,页表,I/O设备,cpu,而程序例如一个c文件或c生成的可执行程序,都只是占用硬盘外设资源 程序加载到内存并为其分配相应的资源才变成进程,既然是进程就有并发性,而程序没有,一个动态观念,一个静态观念描述进程有一个概念交进程描述符PCB...原创 2018-07-14 21:38:47 · 1307 阅读 · 0 评论 -
进程如何从硬盘找到对应文件
struct task_struct {volatile long state; //说明了该进程是否可以执行,还是可中断等信息unsigned long flags; //Flage 是进程号,在调用fork()时给出int sigpending; //进程上是否有待处理的信号mm_segment_t addr_limit; //进程地址空间,区分内核进程与普通进程在内存存放的...原创 2018-05-13 22:32:45 · 476 阅读 · 0 评论 -
浅析文件系统
再说文件系统之前,先说一下存储文件的硬件设备——硬盘,硬盘是由一个一个的盘片组成,盘片就跟我们见到的光盘一样,一个盘片又由两个面组成,叫做盘面,每个盘面有一个编号从上到下从0开始,盘面上有一条条的磁道,磁道是一个一个的同心圆从外向内也是从0开始顺序编号,这些同心圆并不是连续的记录数据,而是划分成一段一段的圆弧,每个圆弧叫做一个扇区,扇区从1开始编号,一般扇区的大小为512kb,于是我们就想,是不是...原创 2018-05-12 17:09:47 · 168 阅读 · 0 评论 -
进程创建 进程终止 进程等待
前面了解了什么是进程,那如何创建一个进程呢? 那就要提到两个函数fork()和vfork() fork()函数有两个返回值,子进程返回子进程的pid和0,父进程返回父进程的pid和子进程的pid vfrok()函数和fork()返回值一样,不同之处是子进程和父进程共享地址空间,fork的子进程具有独立的地址空间,而且vfork保证子进程先运行在它调用exec或exit之后父进程才能被调度运行...原创 2018-04-04 14:45:32 · 263 阅读 · 0 评论 -
进程及task_struct
进程就是正在运行的程序,程序经过键盘输入或硬盘拷贝加载到内存,cpu和内存是双向交互,cpu对数据进行处理计算,在返还给内存,内存中的数据再通过输出设备输出。 举个栗子:我们在一个文件中写的过程,首先操作系统把程序从硬盘加载到内存,cpu执行读写文件的代码,写入文件,完成后再加载到内存,再通过显示器输出。 一个进程就是一个运行着的程序,计算机不可能只运行一个进程,这样就会对资源的浪费,但计算机...原创 2018-04-03 22:37:24 · 134 阅读 · 0 评论 -
Linux基本命令
linux 常用命令的一些总结 总结可以用四个字概括(当然基本操作啦^-^) 那就是“增”“删”“改”“查” 增—>就是 1.文件的创建 touch 文件名1 文件名2 2.目录的创建 mkdir 目录名1 目录名2 删->就是 1.文件的删除 rm [-f -r] 文件名 rm也可以删除目录 2.目录的删除 rmdir [-f -r] 目录名 改->就是 1...原创 2018-04-03 22:15:25 · 108 阅读 · 0 评论 -
进程及进程描述符
进程就是正在运行的程序,程序经过键盘输入或硬盘拷贝加载到内存,cpu和内存是双向交互,cpu对数据进行处理计算,在返还给内存,内存中的数据再通过输出设备输出。举个栗子:我们在一个文件中写的过程,首先操作系统把程序从硬盘加载到内存,cpu执行读写文件的代码,写入文件,完成后再加载到内存,再通过显示器输出。一个进程就是一个运行着的程序,计算机不可能只运行一个进程,这样就会对资源的浪费,但计算机同时...原创 2018-04-03 21:42:39 · 385 阅读 · 0 评论