sleep(),wait(),软链接和硬链接

1、wait()和sleep()

sleep() 是Thread类中的方法,而wait()则是Object类中的方法。

sleep()方法导致了程序暂停,但是它的监控状态仍然保持着,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。

wait()方法会导致线程放弃(释放)对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。注意是准备获取对象锁进入运行状态,而不是立即获得。

2、进程间通信:共享存储器系统,消息传递系统,管道通信系统

1)管道:管道有命名管道和无名管道之分,无名管道只能用于父子进程间通讯,命名管道可用于非父子进程,命名管道就是FIFO,先进先出。只允许数据的单向流动,每个FIFO都有一个名字,允许不相关的进程访问同一个FIFO,因此成为命名管道。

管道和socket都属于管道通信系统。管道是指用于连接一个读进程和一个写进程以实现进程之间通信的一种共享文件。向管道提供输入的是发送进程,也称为写进程,负责向管道输入数据,数据的格式是字符流。接收管道数据的接收进程为读进程。

2)消息队列:用于两个进程之间的通讯,用创建文件的方式建立的,如果一个进程向某个消息队列中写入了数据之后,另一个进程并没有取出数据,即使向消息队列中写数据的进程已经结束,保存在消息队列中的数据并没有消失,也就是说下次再从这个消息队列读数据的时候,就是上次的数据。信箱通信和消息队列属于消息传递系统。

3)共享内存:属于共享存储器系统。

顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址。就好象它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。

注意:共享内存并未提供同步机制,也就是说,在第一个进程结束对共享内存的写操作之前,并无自动机制可以阻止第二个进程开始对它进行读取。所以我们通常需要用其他的机制来同步对共享内存的访问,如信号量

3、中断处理和子程序调用要保存的内容

无论中断处理还是子程序调用都不需要保存通用数据寄存器和通用地址寄存器的内容。

在中断处理的过程中程序计数器(PC)和程序状态字(PSW)寄存器的内容都要压栈保存。在子程序调用时,由于系统硬件限制只保存程序计数器的内容,不保存PSW的内容,如果需要保存PSW的内容,可以由软件来实现。

4、软链接和硬链接

在linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode。即每个文件都有唯一的索引节点inode与之对应,而对于一个索引节点号inode,可以有多个文件名与之对应。

软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(类似于Windows的快捷方式)。可以认为这个新文件的内容就是记要原文件的路径信息。软链接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软链接文件,原来的实体原文件还存在。但若删除原来的文件,则相应的软链接不可用(cat那个软链接文件,则提示“没有该文件或目录”)

硬链接是不会建立inode的,它只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。

硬链接删除的时候,系统调用会检查inode link count的数值,如果它大于等于1,那么inode不会被回收。因此文件的内容不会被删除。硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。改动硬链接中的任意一个,其他的文件内容也会发生同样的改动。可以通过ls –i来查看一下。这两个文件的inode号相同,说明他们是同一个文件。

而软连接建立的是一个指向,即链接文件的内容是指向原文件的指针,他们是两个文件。软链接可以跨文件系统,硬链接不可以;软链接可以对一个不存在的文件名(filename)进行链接。此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件。硬链接不可以(其文件必须存在,inode必须存在)对不存在的文件名进行链接。

软链接可以对目录进行链接,硬链接不可以,用命令ln来创建硬链接,ln –s可以创建软链接。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值