#include<myhead.h>
int main(int argc, char const *argv[])
{
if(argc!=3)///判断输入文件个数
{
printf("input file error\n");
return -1;
}
int srcfd=open(argv[1],O_RDONLY);
if(srcfd==-1)
{
perror("open srcfile error");
return -1;
}
int destfd=open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0664);
if(destfd==-1)
{
perror("open destfile error");
return -1;
}
char buf[128]="";//搬运字符
while(1)
{
int src=read(srcfd,buf,sizeof(buf));//读取
if(src==0)
{
break;
}
for(int i=0;i<strlen(buf);i++)//判断字符
{
if(buf[i]>='A'&&buf[i]<='Z')
{
buf[i]+=32;
}
else if(buf[i]>='a'&&buf[i]<='z')
{
buf[i]-=32;
}
}
write(destfd,buf,src);//输入
}
printf("加密成功\n");
close(srcfd);
close(destfd);
return 0;
}
并发和并行的区别
1、并发:并发是指两个或多个事件在同一时间间隔发生,把任务在不同的时间点交给处理器进行处理。在同一时间点,任务并不会同时运行。
2、并行:并行是指两个或者多个事件在同一时刻发生,把每一个任务分配给每一个处理器独立完成。在同一时间点,任务一定是同时运行。
二、侧重不同
1、并发:并发侧重于在同一实体上。
2、并行:并行侧重于在不同实体上。
三、处理不同
1、并发:并发在一台处理器上“同时”处理多个任务。
2、并行:并行在多台处理器上同时处理多个任务。
1、并发:并发是指两个或多个事件在同一时间间隔发生,把任务在不同的时间点交给处理器进行处理。在同一时间点,任务并不会同时运行。
2、并行:并行是指两个或者多个事件在同一时刻发生,把每一个任务分配给每一个处理器独立完成。在同一时间点,任务一定是同时运行。
二、侧重不同
1、并发:并发侧重于在同一实体上。
2、并行:并行侧重于在不同实体上。
三、处理不同
1、并发:并发在一台处理器上“同时”处理多个任务。
2、并行:并行在多台处理器上同时处理多个任务。
什么是进程
狭义定义:进程就是一段程序的执行过程。
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
进程和程序的区别
(1)程序是永存的;进程是暂时存在的。即进程是有生命周期的,创建,执行,撤销等。
(2)程序是静态的观念,进程是动态的观念;、
(3)进程和程序不是一一对应的: 一个程序可对应多个进程; 一个进程可以执行一个程序或多个程序
(4)进程具有并发性,而程序没有;
(5)进程是竞争计算机资源的基本单位,程序不是。
进程在操作系统中有五种状态,分别是创建态、就绪态、运行态、阻塞态和终止态。
创建态:当进程刚被创建时,它处于创建态。此时,操作系统正在为进程分配资源,初始化 PCB 等。在创建态下,进程还没有被加载到内存中执行。
就绪态:当进程已经准备好运行,但还没有被 CPU 调度执行时,它处于就绪态。在就绪态下,进程已经具备了运行的条件,等待 CPU 调度执行。
运行态:当 CPU 调度器选择了一个就绪态的进程,并开始执行它时,该进程处于运行态。在运行态下,进程正在被 CPU 执行,执行其指令。
阻塞态:当进程由于某些原因无法继续执行,比如等待 I/O 操作完成、等待某个事件发生等,它会进入阻塞态。在阻塞态下,进程暂时停止执行,等待条件满足后重新进入就绪态。
终止态:当进程执行完成或者被终止时,它进入终止态。在终止态下,进程释放占用的资源,操作系统回收 PCB 等,进程的生命周期结束