今天给各位分享Linux属性怎么定义的知识,其中也会对linux文件属性可以用什么表示进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、linux下线程属性常用操作有哪些
- 2、Linux系统的文件属性包含哪些
- 3、linux 文件属性
- 4、linux文件怎么判断属性
- 5、linux文件属性有哪些
- 6、linux中 如何设置文件属性
1、linux下线程属性常用操作有哪些
LinuxThread的线程机制
LinuxThreads是目前Linux平台上使用最为广泛的线程库,由Xavier Leroy (Xavier.Leroy@inria.fr) 负责开发完成,并已绑定在GLIBC中发行。它所实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的 管理在核外函数库中实现。
1.线程描述数据结构及实现限制
LinuxThreads定义了一个struct _pthread_descr_struct数据结构来描述线程,并使用全局数组变量 __pthread_handles来描述和引用进程所辖线程。在__pthread_handles中的前两项,LinuxThreads定义了两个全 局的系统线程:__pthread_initial_thread和__pthread_manager_thread,并用 __pthread_main_thread表征__pthread_manager_thread的父线程(初始为 __pthread_initial_thread)。
struct _pthread_descr_struct是一个双环链表结构,__pthread_manager_thread所在的链表仅包括它 一个元素,实际上,__pthread_manager_thread是一个特殊线程,LinuxThreads仅使用了其中的errno、p_pid、 p_priority等三个域。而__pthread_main_thread所在的链则将进程中所有用户线程串在了一起。经过一系列 pthread_create()之后形成的__pthread_handles数组将如下图所示:
图2 __pthread_handles数组结构
新创建的线程将首先在__pthread_handles数组中占据一项,然后通过数据结构中的链指针连入以__pthread_main_thread为首指针的链表中。这个链表的使用在介绍线程的创建和释放的时候将提到。
LinuxThreads遵循POSIX1003.1c标准,其中对线程库的实现进行了一些范围限制,比如进程最大线程数,线程私有数据区大小等等。在 LinuxThreads的实现中,基本遵循这些限制,但也进行了一定的改动,改动的趋势是放松或者说扩大这些限制,使编程更加方便。这些限定宏主要集中 在sysdeps/unix/sysv/linux/bits/local_lim.h(不同平台使用的文件位置不同)中,包括如下几个:
每进程的私有数据key数,POSIX定义_POSIX_THREAD_KEYS_MAX为128,LinuxThreads使用 PTHREAD_KEYS_MAX,1024;私有数据释放时允许执行的操作数,LinuxThreads与POSIX一致,定义 PTHREAD_DESTRUCTOR_ITERATIONS为4;每进程的线程数,POSIX定义为64,LinuxThreads增大到1024 (PTHREAD_THREADS_MAX);线程运行栈最小空间大小,POSIX未指定,LinuxThreads使用 PTHREAD_STACK_MIN,16384(字节)。
2.管理线程
"一对一"模型的好处之一是线程的调度由核心完成了,而其他诸如线程取消、线程间的同步等工作,都是在核外线程库中完成的。在LinuxThreads 中,专门为每一个进程构造了一个管理线程,负责处理线程相关的管理工作。当进程第一次调用pthread_create()创建一个线程的时候就会创建 (__clone())并启动管理线程。
在一个进程空间内,管理线程与其他线程之间通过一对"管理管道(manager_pipe[2])"来通讯,该管道在创建管理线程之前创建,在成功启动 了管理线程之后,管理管道的读端和写端分别赋给两个全局变量__pthread_manager_reader和 __pthread_manager_request,之后,每个用户线程都通过__pthread_manager_request向管理线程发请求, 但管理线程本身并没有直接使用__pthread_manager_reader,管道的读端(manager_pipe[0])是作为__clone ()的参数之一传给管理线程的,管理线程的工作主要就是监听管道读端,并对从中取出的请求作出反应。
创建管理线程的流程如下所示:
(全局变量pthread_manager_request初值为-1)
图3 创建管理线程的流程
初始化结束后,在__pthread_manager_thread中记录了轻量级进程号以及核外分配和管理的线程id, 2*PTHREAD_THREADS_MAX+1这个数值不会与任何常规用户线程id冲突。管理线程作为pthread_create()的调用者线程的 子线程运行,而pthread_create()所创建的那个用户线程则是由管理线程来调用clone()创建,因此实际上是管理线程的子线程。(此处子 线程的概念应该当作子进程来理解。)
__pthread_manager()就是管理线程的主循环所在,在进行一系列初始化工作后,进入while(1)循环。在循环中,线程以2秒为 timeout查询(__poll())管理管道的读端。在处理请求前,检查其父线程(也就是创建manager的主线程)是否已退出,如果已退出就退出 整个进程。如果有退出的子线程需要清理,则调用pthread_reap_children()清理。
然后才是读取管道中的请求,根据请求类型执行相应操作(switch-case)。具体的请求处理,源码中比较清楚,这里就不赘述了。
3.线程栈
在LinuxThreads中,管理线程的栈和用户线程的栈是分离的,管理线程在进程堆中通过malloc()分配一个THREAD_MANAGER_STACK_SIZE字节的区域作为自己的运行栈。
用户线程的栈分配办法随着体系结构的不同而不同,主要根据两个宏定义来区分,一个是NEED_SEPARATE_REGISTER_STACK,这个属 性仅在IA64平台上使用;另一个是FLOATING_STACK宏,在i386等少数平台上使用,此时用户线程栈由系统决定具体位置并提供保护。与此同 时,用户还可以通过线程属性结构来指定使用用户自定义的栈。因篇幅所限,这里只能分析i386平台所使用的两种栈组织方式:FLOATING_STACK 方式和用户自定义方式。
在FLOATING_STACK方式下,LinuxThreads利用mmap()从内核空间中分配8MB空间(i386系统缺省的最大栈空间大小,如 果有运行限制(rlimit),则按照运行限制设置),使用mprotect()设置其中第一页为非访问区。该8M空间的功能分配如下图:
图4 栈结构示意
低地址被保护的页面用来监测栈溢出。
对于用户指定的栈,在按照指针对界后,设置线程栈顶,并计算出栈底,不做保护,正确性由用户自己保证。
不论哪种组织方式,线程描述结构总是位于栈顶紧邻堆栈的位置。
4.线程id和进程id
每个LinuxThreads线程都同时具有线程id和进程id,其中进程id就是内核所维护的进程号,而线程id则由LinuxThreads分配和维护。
2、Linux系统的文件属性包含哪些
包括文件或目录的节点、种类、权限模式、链接数量、所归属的用户和用户组、最近访问或修改的时间等内容。
3、linux 文件属性
我记得:
文件不光有一个所有者,还有一个所有组。
所有者的权限是高3位的权限管理。所有组是中3位权限的管理,剩下的第三位是其他不被前面两套权限设置管理的人的权限。
也就是说,文件的所有者的群组,和文件所有组没有关系。只要文件和用户在同一个组内,就可以用中3位权限去操作。
4、linux文件怎么判断属性
Linux中的文件属性可以通过ls
-al指令来查看,下面的指令演示了如何在Linux系统中查看文件的属性:letuknowit@ubuntu:/$
cd
/tmpletuknowit@ubuntu:/tmp$
touch
testletuknowit@ubuntu:/tmp$
ls
-al
test-rw-rw-r--
1
letuknowit
letuknowit
2012-03-08
04:33
test第1行:通过cd指令进入
/tmp
目录第2行:通过touch指令新建一个文件,名为:test第3行:通过ls
-al
test指令查询文件test的属性,这里只列出了文件test的属性,如果想列出当前目录下所有文件的属性,去掉test即可(ls
-al),也可以将test换成系统中的某个路径(ls
-al
/tmp),那么就会列出该路径下所有文件的属性第4行:test文件的属性,在Linux中,每个文件的属性由七个部分组成,为了看的更清楚,下面把这7项分开点显示:-rw-rw-r--????????
1????????
letuknowit????????
letuknowit????????
0????????
2012-03-08
04:33????????
test
以上7项依次表示【文件的属性】、【连接数】、【文件的拥有者】、【文件所属的群组】、【文件大小】、【文件创建时间】和【文件名称】。
红色部分的
-rw-rw-r–??
就是Linux系统下文件的属性了,其决定着文件的拥有者、群组以及其他用户对该文件的访问权限,蓝色的letuknowit为该文件的拥有者,绿色的letuknowit是文件所属的群组;由于是用touch指令创建的文件,所以文件的大小为0。
5、linux文件属性有哪些
文件的权限与属性是Linux相当重要的一部分,今天主要来看一下linux文件的属性。
工具/原料
Linux操作系统
方法/步骤
查看Linux属性基本上都需要使用Root的身份才能够处理,所以第1步要先登陆root的身份登陆。
首先了解一个重要的也是常用的查看文件的命令ls,ls是list的意思,重点是显示文件的文件名与相关属性。
以root身份登录linux后,执行ls-al查看内容;
带上参数-al表示列出所有的文件详细权限与属性,包含隐藏文件(文件名第一个字符为“.”的文件为隐藏文件)
通过ls-al显示的结果中看文件属性示意图
列中的第一个字符代表这个文件是“目录、文件或链接文件等”
若是【d】则代表该条记录是目录;
若是【-】则代表是文件;
若是【|】则表示为连接文件(linkfile);
若是【b】则表示设备文件里面的可供存储的接口设备;
若是【c】则表示设备文件里面的串口端口设备,例如键盘、鼠标。
接下来的字符中,以3个为一组,且均为”rwx”:
其中【r】代表可读(read);
其中【w】代表可写(write);
其中【x】代表可执行(execute);
这3个权限的位置不会改变,如果没有相应的权限,就会出现减号【-】
第二列表示有多少文件名连接到此节点(i-node)
第三列表表示这个文件(或目录)的“所有者账号”
第四列表表示这个文件的所属用户组
第五列为这个文件的大小,默认单位为B
第六列为这个文件的创建文件日期或者是最近的修改日期
第七列为文件名
对于ls的详细用法,还可以使用man ls进一步了解
6
在linux中,每一个文件都多加了很多的属性进来,尤其是用户组,其最大的用途是在“数据安全性”上来。如果你有一个开发团队,在你的团队中,你希望每个人都可以使用某一些目录下的文件,而非你的团队的其他人则不能使用,哪么可以将团队所需的文件权限写为【-rwxrwx---】
6、linux中 如何设置文件属性
linux中 设置文件属性 和 文件权限几乎是一会事。
用
chmod a-r
就可以了。
Linux属性怎么定义的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux文件属性可以用什么表示、Linux属性怎么定义的信息别忘了在本站进行查找喔。