A vehicle control device comprising: a storage unit that stores a first program describing an operation for controlling a vehicle, and that stores a second program describing an operation for controlling the vehicle with a safety level lower than that of the operation described in the first program; a processor that executes the first program and the second program; a priority controller that controls a priority when the processor executes the first program and a priority when the processor executes the second program; and an execution waiting job list that describes a list of jobs waiting for being executed by the processor, wherein the processor is configured to perform, when executing a process described in the first program, an interruption process that moves into an operational mode with a priority higher than that of when executing a process described in the second program, wherein the execution waiting job list describes the list of jobs in descending order of priority at which the processor executes the job, wherein the priority controller receives, from the second program, a request to call the first program, wherein the priority controller inserts a job to call the first program at a position in the execution waiting job list corresponding to a priority designated by the second program when the second program calls the first program, and wherein the processor executes a job included in the list of jobs in order of the priority described in the execution waiting job list, a validity checker that checks whether a request from the second program to call the first program is valid; and an authentication code table that holds an authentication code that is to be designated when the second program calls the first program, wherein the second program is configured to designate the authentication code when calling the first program, wherein the validity checker checks whether a request from the second program to call the first program is valid by comparing an authentication code designated by the second program when calling the first program with an authentication code stored in the authentication code table, and wherein the validity checker allows the call if the request is valid and denies the call if the request is not valid. a storage unit that stores a first program describing an operation for controlling a vehicle, and that stores a second program describing an operation for controlling the vehicle with a safety level lower than that of the operation described in the first program; a processor that executes the first program and the second program; a priority controller that controls a priority when the processor executes the first program and a priority when the processor executes the second program; and an execution waiting job list that describes a list of jobs waiting for being executed by the processor, wherein the processor is configured to perform, when executing a process described in the first program, an interruption process that moves into an operational mode with a priority higher than that of when executing a process described in the second program, wherein the execution waiting job list describes the list of jobs in descending order of priority at which the processor executes the job, wherein the priority controller receives, from the second program, a request to call the first program, wherein the priority controller inserts a job to call the first program at a position in the execution waiting job list corresponding to a priority designated by the second program when the second program calls the first program, and wherein the processor executes a job included in the list of jobs in order of the priority described in the execution waiting job list, a validity checker that checks whether a request from the second program to call the first program is valid; and an authentication code table that holds an authentication code that is to be designated when the second program calls the first program, wherein the second program is configured to designate the authentication code when calling the first program, wherein the validity checker checks whether a request from the second program to call the first program is valid by comparing an authentication code designated by the second program when calling the first program with an authentication code stored in the authentication code table, and wherein the validity checker allows the call if the request is valid and denies the call if the request is not valid.